diff --git a/.gitignore b/.gitignore index 7ca469a..1aa21ac 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,7 @@ dist/ .DS_Store .idea/ .vscode/ + +# Python bytecode +__pycache__/ +*.py[cod] 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..95977a3 --- /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 +} \ No newline at end of file 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..8e19ad5 --- /dev/null +++ b/server/addons/hgexample/model/input/sysin/index.go @@ -0,0 +1,27 @@ +// 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/appmember/appmember.go b/server/api/admin/appmember/appmember.go new file mode 100644 index 0000000..3da74e1 --- /dev/null +++ b/server/api/admin/appmember/appmember.go @@ -0,0 +1,149 @@ +package appmember + +import ( + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" + + "github.com/gogf/gf/v2/frame/g" +) + +type ListReq struct { + g.Meta `path:"/appMember/list" method:"get" tags:"会员管理" summary:"会员列表"` + sysin.AppMemberListInp +} +type ListRes struct { + form.PageRes + List []*sysin.AppMemberListModel `json:"list"` +} +type ViewReq struct { + g.Meta `path:"/appMember/view" method:"get" tags:"会员管理" summary:"会员详情"` + sysin.AppMemberViewInp +} +type ViewRes struct{ *sysin.AppMemberViewModel } +type EditReq struct { + g.Meta `path:"/appMember/edit" method:"post" tags:"会员管理" summary:"新增编辑会员"` + sysin.AppMemberEditInp +} +type EditRes struct{} +type DeleteReq struct { + g.Meta `path:"/appMember/delete" method:"post" tags:"会员管理" summary:"注销会员"` + sysin.AppMemberDeleteInp +} +type DeleteRes struct{} +type AutoDispatchReq struct { + g.Meta `path:"/appMember/autoDispatch" method:"post" tags:"会员管理" summary:"切换派单模式"` + sysin.AppMemberAutoDispatchInp +} +type AutoDispatchRes struct{} +type CategoryReq struct { + g.Meta `path:"/appMember/category" method:"post" tags:"会员管理" summary:"切换会员真人假人类别"` + sysin.AppMemberCategoryInp +} +type CategoryRes struct{} + +type PaymentListReq struct { + g.Meta `path:"/appMember/paymentList" method:"get" tags:"会员管理" summary:"收款账户列表"` + sysin.AppMemberPaymentListInp +} +type PaymentListRes struct { + List []*sysin.AppMemberPaymentModel `json:"list"` +} +type PaymentEditReq struct { + g.Meta `path:"/appMember/paymentEdit" method:"post" tags:"会员管理" summary:"新增编辑收款账户"` + sysin.AppMemberPaymentEditInp +} +type PaymentEditRes struct{} +type PaymentDeleteReq struct { + g.Meta `path:"/appMember/paymentDelete" method:"post" tags:"会员管理" summary:"删除收款账户"` + sysin.AppMemberPaymentDeleteInp +} +type PaymentDeleteRes struct{} + +type AddressListReq struct { + g.Meta `path:"/appMember/addressList" method:"get" tags:"会员管理" summary:"地址列表"` + sysin.AppMemberAddressListInp +} +type AddressListRes struct { + List []*sysin.AppMemberAddressModel `json:"list"` +} +type AddressEditReq struct { + g.Meta `path:"/appMember/addressEdit" method:"post" tags:"会员管理" summary:"新增编辑地址"` + sysin.AppMemberAddressEditInp +} +type AddressEditRes struct{} +type AddressDeleteReq struct { + g.Meta `path:"/appMember/addressDelete" method:"post" tags:"会员管理" summary:"删除地址"` + sysin.AppMemberAddressDeleteInp +} +type AddressDeleteRes struct{} + +type SensitiveReq struct { + g.Meta `path:"/appMember/sensitive" method:"post" tags:"会员管理" summary:"授权查看敏感信息"` + sysin.AppMemberSensitiveInp +} +type SensitiveRes struct{ *sysin.AppMemberSensitiveModel } +type TeamReq struct { + g.Meta `path:"/appMember/team" method:"get" tags:"会员管理" summary:"团队查询"` + sysin.AppMemberTeamInp +} +type TeamRes struct { + form.PageRes + List []*sysin.AppMemberTeamModel `json:"list"` +} + +type StatusRequestReq struct { + g.Meta `path:"/appMember/statusRequest" method:"post" tags:"会员管理" summary:"发起会员状态审批"` + sysin.AppMemberStatusRequestInp +} +type StatusRequestRes struct{ *sysin.AppMemberApprovalModel } +type StatusExecuteReq struct { + g.Meta `path:"/appMember/statusExecute" method:"post" tags:"会员管理" summary:"执行已审批会员状态变更"` + sysin.AppMemberStatusExecuteInp +} +type StatusExecuteRes struct{} + +type WalletListReq struct { + g.Meta `path:"/appMember/walletList" method:"get" tags:"会员管理" summary:"资金调账列表"` + sysin.WalletAdjustmentListInp +} +type WalletListRes struct { + form.PageRes + List []*sysin.WalletAdjustmentListModel `json:"list"` +} +type LedgerListReq struct { + g.Meta `path:"/appMember/ledgerList" method:"get" tags:"会员管理" summary:"会员账变流水"` + sysin.WalletLedgerListInp +} +type LedgerListRes struct { + form.PageRes + List []*sysin.WalletLedgerListModel `json:"list"` +} +type WalletRequestReq struct { + g.Meta `path:"/appMember/walletRequest" method:"post" tags:"会员管理" summary:"发起资金调账审批"` + sysin.WalletAdjustmentRequestInp +} +type WalletRequestRes struct{ *sysin.AppMemberApprovalModel } +type WalletExecuteReq struct { + g.Meta `path:"/appMember/walletExecute" method:"post" tags:"会员管理" summary:"执行已审批资金调账"` + sysin.WalletAdjustmentExecuteInp +} +type WalletExecuteRes struct{} + +type NoticeListReq struct { + g.Meta `path:"/appMember/noticeList" method:"get" tags:"会员管理" summary:"会员通知列表"` + sysin.MemberNoticeListInp +} +type NoticeListRes struct { + form.PageRes + List []*sysin.MemberNoticeListModel `json:"list"` +} +type NoticeEditReq struct { + g.Meta `path:"/appMember/noticeEdit" method:"post" tags:"会员管理" summary:"创建会员通知"` + sysin.MemberNoticeEditInp +} +type NoticeEditRes struct{} +type NoticeRevokeReq struct { + g.Meta `path:"/appMember/noticeRevoke" method:"post" tags:"会员管理" summary:"撤回会员通知"` + sysin.MemberNoticeRevokeInp +} +type NoticeRevokeRes struct{} diff --git a/server/api/admin/approval/approval.go b/server/api/admin/approval/approval.go new file mode 100644 index 0000000..9a099a5 --- /dev/null +++ b/server/api/admin/approval/approval.go @@ -0,0 +1,53 @@ +package approval + +import ( + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" + + "github.com/gogf/gf/v2/frame/g" +) + +type ListReq struct { + g.Meta `path:"/approval/list" method:"get" tags:"审批中心" summary:"获取审批列表"` + sysin.ApprovalListInp +} +type ListRes struct { + form.PageRes + List []*sysin.ApprovalListModel `json:"list" dc:"数据列表"` +} + +type ViewReq struct { + g.Meta `path:"/approval/view" method:"get" tags:"审批中心" summary:"获取审批详情"` + sysin.ApprovalViewInp +} +type ViewRes struct{ *sysin.ApprovalViewModel } + +type CreateReq struct { + g.Meta `path:"/approval/create" method:"post" tags:"审批中心" summary:"创建审批草稿"` + sysin.ApprovalCreateInp +} +type CreateRes struct{ *sysin.ApprovalCreateModel } + +type SubmitReq struct { + g.Meta `path:"/approval/submit" method:"post" tags:"审批中心" summary:"提交审批"` + sysin.ApprovalSubmitInp +} +type SubmitRes struct{} + +type ApproveReq struct { + g.Meta `path:"/approval/approve" method:"post" tags:"审批中心" summary:"通过审批"` + sysin.ApprovalDecisionInp +} +type ApproveRes struct{} + +type RejectReq struct { + g.Meta `path:"/approval/reject" method:"post" tags:"审批中心" summary:"驳回审批"` + sysin.ApprovalDecisionInp +} +type RejectRes struct{} + +type CancelReq struct { + g.Meta `path:"/approval/cancel" method:"post" tags:"审批中心" summary:"取消审批"` + sysin.ApprovalCancelInp +} +type CancelRes 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/bizaudit/biz_audit.go b/server/api/admin/bizaudit/biz_audit.go new file mode 100644 index 0000000..00fb653 --- /dev/null +++ b/server/api/admin/bizaudit/biz_audit.go @@ -0,0 +1,23 @@ +package bizaudit + +import ( + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" + + "github.com/gogf/gf/v2/frame/g" +) + +type ListReq struct { + g.Meta `path:"/bizAudit/list" method:"get" tags:"业务审计" summary:"获取业务审计列表"` + sysin.BizAuditListInp +} +type ListRes struct { + form.PageRes + List []*sysin.BizAuditListModel `json:"list" dc:"数据列表"` +} + +type ViewReq struct { + g.Meta `path:"/bizAudit/view" method:"get" tags:"业务审计" summary:"获取业务审计详情"` + sysin.BizAuditViewInp +} +type ViewRes struct{ *sysin.BizAuditViewModel } 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..591b13c --- /dev/null +++ b/server/api/admin/common/console.go @@ -0,0 +1,52 @@ +// 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 ( + "hotgo/internal/model/input/sysin" + + "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"` +} + +type DashboardSummaryReq struct { + g.Meta `path:"/dashboard/summary" method:"get" tags:"控制台" summary:"业务数据看板"` + sysin.DashboardSummaryInp +} + +type DashboardSummaryRes struct { + *sysin.DashboardSummaryModel +} 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/customerservice/customerservice.go b/server/api/admin/customerservice/customerservice.go new file mode 100644 index 0000000..2ccbcd0 --- /dev/null +++ b/server/api/admin/customerservice/customerservice.go @@ -0,0 +1,38 @@ +package customerservice + +import ( + "hotgo/internal/model/entity" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" + + "github.com/gogf/gf/v2/frame/g" +) + +type ListReq struct { + g.Meta `path:"/customerService/list" method:"get" tags:"客服管理" summary:"客服列表"` + sysin.CustomerServiceListInp +} +type ListRes struct { + form.PageRes + List []*entity.CustomerService `json:"list"` +} +type ViewReq struct { + g.Meta `path:"/customerService/view" method:"get" tags:"客服管理" summary:"客服详情"` + sysin.CustomerServiceViewInp +} +type ViewRes struct{ *entity.CustomerService } +type EditReq struct { + g.Meta `path:"/customerService/edit" method:"post" tags:"客服管理" summary:"新增编辑客服"` + sysin.CustomerServiceEditInp +} +type EditRes struct{} +type StatusReq struct { + g.Meta `path:"/customerService/status" method:"post" tags:"客服管理" summary:"客服启停"` + sysin.CustomerServiceStatusInp +} +type StatusRes struct{} +type DeleteReq struct { + g.Meta `path:"/customerService/delete" method:"post" tags:"客服管理" summary:"删除客服"` + sysin.CustomerServiceDeleteInp +} +type DeleteRes struct{} 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/memberlevel/memberlevel.go b/server/api/admin/memberlevel/memberlevel.go new file mode 100644 index 0000000..63f27f7 --- /dev/null +++ b/server/api/admin/memberlevel/memberlevel.go @@ -0,0 +1,67 @@ +package memberlevel + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/entity" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +type ListReq struct { + g.Meta `path:"/memberLevel/list" method:"get" tags:"会员等级" summary:"会员等级列表"` + sysin.MemberLevelListInp +} +type ListRes struct { + form.PageRes + List []*sysin.MemberLevelListModel `json:"list"` +} +type ViewReq struct { + g.Meta `path:"/memberLevel/view" method:"get" tags:"会员等级" summary:"会员等级详情"` + sysin.MemberLevelViewInp +} +type ViewRes struct{ *sysin.MemberLevelViewModel } +type SaveReq struct { + g.Meta `path:"/memberLevel/save" method:"post" tags:"会员等级" summary:"保存等级规则草稿"` + sysin.MemberLevelSaveInp +} +type SaveRes struct { + Id uint64 `json:"id"` + VersionId uint64 `json:"versionId"` +} +type SubmitReq struct { + g.Meta `path:"/memberLevel/submit" method:"post" tags:"会员等级" summary:"提交等级规则审批"` + sysin.MemberLevelSubmitInp +} +type SubmitRes struct { + *sysin.MemberLevelApprovalModel +} +type PublishReq struct { + g.Meta `path:"/memberLevel/publish" method:"post" tags:"会员等级" summary:"发布已审批等级规则"` + sysin.MemberLevelPublishInp +} +type PublishRes struct{} +type RollbackReq struct { + g.Meta `path:"/memberLevel/rollback" method:"post" tags:"会员等级" summary:"回滚等级规则为新草稿"` + sysin.MemberLevelRollbackInp +} +type RollbackRes struct { + VersionId uint64 `json:"versionId"` +} +type HistoryReq struct { + g.Meta `path:"/memberLevel/history" method:"get" tags:"会员等级" summary:"等级版本历史"` + sysin.MemberLevelHistoryInp +} +type HistoryRes struct { + form.PageRes + List []*entity.AppMemberLevelVersion `json:"list"` +} +type StatusReq struct { + g.Meta `path:"/memberLevel/status" method:"post" tags:"会员等级" summary:"停用启用会员等级"` + sysin.MemberLevelStatusInp +} +type StatusRes struct{} +type DeleteReq struct { + g.Meta `path:"/memberLevel/delete" method:"post" tags:"会员等级" summary:"删除会员等级"` + sysin.MemberLevelDeleteInp +} +type DeleteRes 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/portal/portal.go b/server/api/admin/portal/portal.go new file mode 100644 index 0000000..a09ac78 --- /dev/null +++ b/server/api/admin/portal/portal.go @@ -0,0 +1,144 @@ +package portal + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/entity" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +type SiteConfigCurrentReq struct { + g.Meta `path:"/siteConfig/current" method:"get" tags:"门户管理" summary:"获取当前站点配置"` + sysin.SiteConfigCurrentInp +} +type SiteConfigCurrentRes struct{ *sysin.SiteConfigCurrentModel } +type SiteConfigHistoryReq struct { + g.Meta `path:"/siteConfig/history" method:"get" tags:"门户管理" summary:"获取站点配置版本"` + sysin.SiteConfigHistoryInp +} +type SiteConfigHistoryRes struct { + form.PageRes + List []*sysin.SiteConfigHistoryModel `json:"list"` +} +type SiteConfigSaveReq struct { + g.Meta `path:"/siteConfig/save" method:"post" tags:"门户管理" summary:"保存并立即生效站点配置"` + sysin.SiteConfigSaveInp +} +type SiteConfigSaveRes struct { + Id uint64 `json:"id"` +} +type SiteConfigSubmitReq struct { + g.Meta `path:"/siteConfig/submit" method:"post" tags:"门户管理" summary:"提交站点配置审批"` + sysin.SiteConfigSubmitInp +} +type SiteConfigSubmitRes struct{ *sysin.PortalApprovalModel } +type SiteConfigPublishReq struct { + g.Meta `path:"/siteConfig/publish" method:"post" tags:"门户管理" summary:"发布已审批站点配置"` + sysin.SiteConfigPublishInp +} +type SiteConfigPublishRes struct{} +type SiteConfigRollbackReq struct { + g.Meta `path:"/siteConfig/rollback" method:"post" tags:"门户管理" summary:"回滚站点配置"` + sysin.SiteConfigRollbackInp +} +type SiteConfigRollbackRes struct { + Id uint64 `json:"id"` +} + +type ContentListReq struct { + g.Meta `path:"/portalContent/list" method:"get" tags:"文本管理" summary:"获取文本内容列表"` + sysin.ContentListInp +} +type ContentListRes struct { + form.PageRes + List []*sysin.ContentListModel `json:"list"` +} +type ContentViewReq struct { + g.Meta `path:"/portalContent/view" method:"get" tags:"文本管理" summary:"获取文本内容详情"` + sysin.ContentViewInp +} +type ContentViewRes struct{ *sysin.ContentViewModel } +type ContentEditReq struct { + g.Meta `path:"/portalContent/edit" method:"post" tags:"文本管理" summary:"新增或编辑文本内容"` + sysin.ContentEditInp +} +type ContentEditRes struct { + Id uint64 `json:"id"` +} +type ContentDeleteReq struct { + g.Meta `path:"/portalContent/delete" method:"post" tags:"文本管理" summary:"删除或下线文本内容"` + sysin.ContentDeleteInp +} +type ContentDeleteRes struct{} +type ContentPublishReq struct { + g.Meta `path:"/portalContent/publish" method:"post" tags:"文本管理" summary:"发布文本内容版本"` + sysin.ContentPublishInp +} +type ContentPublishRes struct{} +type ContentOfflineReq struct { + g.Meta `path:"/portalContent/offline" method:"post" tags:"文本管理" summary:"下线文本内容"` + sysin.ContentOfflineInp +} +type ContentOfflineRes struct{} + +type BannerListReq struct { + g.Meta `path:"/banner/list" method:"get" tags:"Banner管理" summary:"获取Banner列表"` + sysin.BannerListInp +} +type BannerListRes struct { + form.PageRes + List []*sysin.BannerListModel `json:"list"` +} +type BannerViewReq struct { + g.Meta `path:"/banner/view" method:"get" tags:"Banner管理" summary:"获取Banner详情"` + sysin.BannerViewInp +} +type BannerViewRes struct{ *entity.Banner } +type BannerEditReq struct { + g.Meta `path:"/banner/edit" method:"post" tags:"Banner管理" summary:"新增或编辑Banner"` + sysin.BannerEditInp +} +type BannerEditRes struct { + Id uint64 `json:"id"` +} +type BannerDeleteReq struct { + g.Meta `path:"/banner/delete" method:"post" tags:"Banner管理" summary:"删除或下线Banner"` + sysin.BannerDeleteInp +} +type BannerDeleteRes struct{} +type BannerStatusReq struct { + g.Meta `path:"/banner/status" method:"post" tags:"Banner管理" summary:"更新Banner发布状态"` + sysin.BannerStatusInp +} +type BannerStatusRes struct{} + +type ManualProductListReq struct { + g.Meta `path:"/manualProduct/list" method:"get" tags:"手工商城" summary:"获取手工商城商品"` + sysin.ManualProductListInp +} +type ManualProductListRes struct { + form.PageRes + List []*sysin.ManualProductListModel `json:"list"` +} +type ManualProductViewReq struct { + g.Meta `path:"/manualProduct/view" method:"get" tags:"手工商城" summary:"获取手工商城商品详情"` + sysin.ManualProductViewInp +} +type ManualProductViewRes struct{ *sysin.ManualProductViewModel } +type ManualProductEditReq struct { + g.Meta `path:"/manualProduct/edit" method:"post" tags:"手工商城" summary:"新增或编辑手工商城商品"` + sysin.ManualProductEditInp +} +type ManualProductEditRes struct { + Id uint64 `json:"id"` +} +type ManualProductDeleteReq struct { + g.Meta `path:"/manualProduct/delete" method:"post" tags:"手工商城" summary:"删除或下线手工商城商品"` + sysin.ManualProductDeleteInp +} +type ManualProductDeleteRes struct{} +type ManualProductStatusReq struct { + g.Meta `path:"/manualProduct/status" method:"post" tags:"手工商城" summary:"更新手工商城商品状态"` + sysin.ManualProductStatusInp +} +type ManualProductStatusRes 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/product/product.go b/server/api/admin/product/product.go new file mode 100644 index 0000000..0f6c176 --- /dev/null +++ b/server/api/admin/product/product.go @@ -0,0 +1,43 @@ +package product + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +type ListReq struct { + g.Meta `path:"/product/list" method:"get" tags:"商品管理" summary:"获取商品列表"` + sysin.ProductListInp +} +type ListRes struct { + form.PageRes + List []*sysin.ProductListModel `json:"list"` +} +type ViewReq struct { + g.Meta `path:"/product/view" method:"get" tags:"商品管理" summary:"获取商品详情"` + sysin.ProductViewInp +} +type ViewRes struct{ *sysin.ProductListModel } +type EditReq struct { + g.Meta `path:"/product/edit" method:"post" tags:"商品管理" summary:"新增编辑商品"` + sysin.ProductEditInp +} +type EditRes struct { + Id uint64 `json:"id"` +} +type StatusReq struct { + g.Meta `path:"/product/status" method:"post" tags:"商品管理" summary:"商品上下架"` + sysin.ProductStatusInp +} +type StatusRes struct{} +type RecommendReq struct { + g.Meta `path:"/product/recommend" method:"post" tags:"商品管理" summary:"商品推荐切换"` + sysin.ProductRecommendInp +} +type RecommendRes struct{} +type DeleteReq struct { + g.Meta `path:"/product/delete" method:"post" tags:"商品管理" summary:"删除商品"` + sysin.ProductDeleteInp +} +type DeleteRes 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/rechargeorder/rechargeorder.go b/server/api/admin/rechargeorder/rechargeorder.go new file mode 100644 index 0000000..6debeee --- /dev/null +++ b/server/api/admin/rechargeorder/rechargeorder.go @@ -0,0 +1,37 @@ +package rechargeorder + +import ( + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" + + "github.com/gogf/gf/v2/frame/g" +) + +type ListReq struct { + g.Meta `path:"/rechargeOrder/list" method:"get" tags:"充值管理" summary:"充值订单列表"` + sysin.RechargeOrderListInp +} +type ListRes struct { + form.PageRes + List []*sysin.RechargeOrderListModel `json:"list"` +} +type SummaryReq struct { + g.Meta `path:"/rechargeOrder/summary" method:"get" tags:"充值管理" summary:"充值金额汇总"` + sysin.RechargeOrderListInp +} +type SummaryRes struct{ *sysin.RechargeSummaryModel } +type ViewReq struct { + g.Meta `path:"/rechargeOrder/view" method:"get" tags:"充值管理" summary:"充值订单详情"` + sysin.RechargeOrderViewInp +} +type ViewRes struct{ *sysin.RechargeOrderListModel } +type ReviewReq struct { + g.Meta `path:"/rechargeOrder/review" method:"post" tags:"充值管理" summary:"提交充值审核"` + sysin.RechargeReviewInp +} +type ReviewRes struct{ *sysin.FinanceApprovalModel } +type ExecuteReq struct { + g.Meta `path:"/rechargeOrder/execute" method:"post" tags:"充值管理" summary:"执行已审批充值结果"` + sysin.FinanceExecuteInp +} +type ExecuteRes struct{} 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/task/task.go b/server/api/admin/task/task.go new file mode 100644 index 0000000..1e87c88 --- /dev/null +++ b/server/api/admin/task/task.go @@ -0,0 +1,38 @@ +package task + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +type ListReq struct { + g.Meta `path:"/task/list" method:"get" tags:"任务管理" summary:"获取任务列表"` + sysin.TaskListInp +} +type ListRes struct { + form.PageRes + List []*sysin.TaskListModel `json:"list"` +} +type ViewReq struct { + g.Meta `path:"/task/view" method:"get" tags:"任务管理" summary:"获取任务详情"` + sysin.TaskViewInp +} +type ViewRes struct{ *sysin.TaskListModel } +type EditReq struct { + g.Meta `path:"/task/edit" method:"post" tags:"任务管理" summary:"新增编辑任务"` + sysin.TaskEditInp +} +type EditRes struct { + Id uint64 `json:"id"` +} +type StatusReq struct { + g.Meta `path:"/task/status" method:"post" tags:"任务管理" summary:"任务发布下线"` + sysin.TaskStatusInp +} +type StatusRes struct{} +type DeleteReq struct { + g.Meta `path:"/task/delete" method:"post" tags:"任务管理" summary:"删除任务"` + sysin.TaskDeleteInp +} +type DeleteRes struct{} diff --git a/server/api/admin/taskhall/taskhall.go b/server/api/admin/taskhall/taskhall.go new file mode 100644 index 0000000..32b3437 --- /dev/null +++ b/server/api/admin/taskhall/taskhall.go @@ -0,0 +1,36 @@ +package taskhall + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +type ListReq struct { + g.Meta `path:"/taskHall/list" method:"get" tags:"任务大厅" summary:"任务大厅列表"` + sysin.TaskHallListInp +} +type ListRes struct { + form.PageRes + List []*sysin.TaskHallListModel `json:"list"` +} +type ViewReq struct { + g.Meta `path:"/taskHall/view" method:"get" tags:"任务大厅" summary:"任务大厅详情"` + sysin.TaskHallViewInp +} +type ViewRes struct{ *sysin.TaskHallListModel } +type EditReq struct { + g.Meta `path:"/taskHall/edit" method:"post" tags:"任务大厅" summary:"新增编辑任务大厅"` + sysin.TaskHallEditInp +} +type EditRes struct{} +type StatusReq struct { + g.Meta `path:"/taskHall/status" method:"post" tags:"任务大厅" summary:"发布下线任务大厅"` + sysin.TaskHallStatusInp +} +type StatusRes struct{} +type DeleteReq struct { + g.Meta `path:"/taskHall/delete" method:"post" tags:"任务大厅" summary:"删除任务大厅"` + sysin.TaskHallDeleteInp +} +type DeleteRes struct{} diff --git a/server/api/admin/tasksubmission/tasksubmission.go b/server/api/admin/tasksubmission/tasksubmission.go new file mode 100644 index 0000000..fbcfc94 --- /dev/null +++ b/server/api/admin/tasksubmission/tasksubmission.go @@ -0,0 +1,26 @@ +package tasksubmission + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +type ListReq struct { + g.Meta `path:"/taskSubmission/list" method:"get" tags:"会员任务审核" summary:"获取会员任务提交"` + sysin.TaskSubmissionListInp +} +type ListRes struct { + form.PageRes + List []*sysin.TaskSubmissionListModel `json:"list"` +} +type ViewReq struct { + g.Meta `path:"/taskSubmission/view" method:"get" tags:"会员任务审核" summary:"获取任务提交详情"` + sysin.TaskSubmissionViewInp +} +type ViewRes struct{ *sysin.TaskSubmissionListModel } +type ReviewReq struct { + g.Meta `path:"/taskSubmission/review" method:"post" tags:"会员任务审核" summary:"审核并结算会员任务"` + sysin.TaskSubmissionReviewInp +} +type ReviewRes 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/admin/tradeorder/tradeorder.go b/server/api/admin/tradeorder/tradeorder.go new file mode 100644 index 0000000..a8fe652 --- /dev/null +++ b/server/api/admin/tradeorder/tradeorder.go @@ -0,0 +1,45 @@ +package tradeorder + +import ( + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" + + "github.com/gogf/gf/v2/frame/g" +) + +type ListReq struct { + g.Meta `path:"/tradeOrder/list" method:"get" tags:"交易订单" summary:"交易订单列表"` + sysin.TradeOrderListInp +} +type ListRes struct { + form.PageRes + List []*sysin.TradeOrderListModel `json:"list"` +} +type ViewReq struct { + g.Meta `path:"/tradeOrder/view" method:"get" tags:"交易订单" summary:"交易订单详情"` + sysin.TradeOrderViewInp +} +type ViewRes struct{ *sysin.TradeOrderViewModel } +type MatchProductsReq struct { + g.Meta `path:"/tradeOrder/matchProducts" method:"get" tags:"交易订单" summary:"获取可匹配商品"` + sysin.TradeOrderMatchProductListInp +} +type MatchProductsRes struct { + form.PageRes + List []*sysin.TradeOrderMatchProductModel `json:"list"` +} +type MatchReq struct { + g.Meta `path:"/tradeOrder/match" method:"post" tags:"交易订单" summary:"人工匹配订单商品"` + sysin.TradeOrderMatchInp +} +type MatchRes struct{} +type ApplyReq struct { + g.Meta `path:"/tradeOrder/apply" method:"post" tags:"交易订单" summary:"提交订单人工处理审批"` + sysin.TradeOrderApplyInp +} +type ApplyRes struct{ *sysin.FinanceApprovalModel } +type ExecuteReq struct { + g.Meta `path:"/tradeOrder/execute" method:"post" tags:"交易订单" summary:"执行已审批订单处理"` + sysin.TradeOrderExecuteInp +} +type ExecuteRes struct{} diff --git a/server/api/admin/withdrawalorder/withdrawalorder.go b/server/api/admin/withdrawalorder/withdrawalorder.go new file mode 100644 index 0000000..2302602 --- /dev/null +++ b/server/api/admin/withdrawalorder/withdrawalorder.go @@ -0,0 +1,39 @@ +package withdrawalorder + +import ( + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" + + "github.com/gogf/gf/v2/frame/g" +) + +type ListReq struct { + g.Meta `path:"/withdrawalOrder/list" method:"get" tags:"提现管理" summary:"提现订单列表"` + sysin.WithdrawalOrderListInp +} +type ListRes struct { + form.PageRes + List []*sysin.WithdrawalOrderListModel `json:"list"` +} +type ViewReq struct { + g.Meta `path:"/withdrawalOrder/view" method:"get" tags:"提现管理" summary:"提现订单详情(仅脱敏账户)"` + sysin.WithdrawalOrderViewInp +} +type ViewRes struct { + *sysin.WithdrawalOrderListModel +} +type ReviewReq struct { + g.Meta `path:"/withdrawalOrder/review" method:"post" tags:"提现管理" summary:"提交提现审核"` + sysin.WithdrawalReviewInp +} +type ReviewRes struct{ *sysin.FinanceApprovalModel } +type ExecuteReq struct { + g.Meta `path:"/withdrawalOrder/execute" method:"post" tags:"提现管理" summary:"执行已审批提现审核"` + sysin.FinanceExecuteInp +} +type ExecuteRes struct{} +type CompleteReq struct { + g.Meta `path:"/withdrawalOrder/complete" method:"post" tags:"提现管理" summary:"登记提现付款结果"` + sysin.WithdrawalCompleteInp +} +type CompleteRes 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..b7a96b6 --- /dev/null +++ b/server/go.mod @@ -0,0 +1,165 @@ +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/microcosm-cc/bluemonday v1.0.27 + 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/aymerick/douceur v0.2.0 // 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/gorilla/css v1.0.1 // 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..a8cd3d8 --- /dev/null +++ b/server/go.sum @@ -0,0 +1,706 @@ +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/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= +github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= +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/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8= +github.com/gorilla/css v1.0.1/go.mod h1:BvnYkspnSzMmwRK+b8/xgNPLiIuNZr6vbZBTPQ2A3b0= +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/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk= +github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA= +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..6024ef6 --- /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:root:root@tcp(127.0.0.1:3306)/olons_admin?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/app_member.go b/server/internal/consts/app_member.go new file mode 100644 index 0000000..4d18ddf --- /dev/null +++ b/server/internal/consts/app_member.go @@ -0,0 +1,105 @@ +package consts + +import ( + "hotgo/internal/library/dict" + "hotgo/internal/model" +) + +const ( + AppMemberStatusNormal = 1 + AppMemberStatusDisabled = 2 + AppMemberStatusCancelled = 3 + AppMemberRiskNormal = 1 + AppMemberRiskWatch = 2 + AppMemberRiskBlocked = 3 + AppMemberDispatchAuto = 1 + AppMemberDispatchManual = 2 + AppMemberCategoryReal = 1 + AppMemberCategoryFake = 2 + PaymentAccountBank = 1 + PaymentAccountDigital = 2 + PaymentAccountUnionPay = 3 + PaymentAccountAlipay = 4 + PaymentAccountWechat = 5 + WalletDirectionIncome = 1 + WalletDirectionExpense = 2 + WalletAdjustReward = 1 + WalletAdjustSupplement = 2 + WalletAdjustDeduct = 3 + WalletAdjustReversal = 4 + WalletAdjustOther = 5 + WalletRequestPending = 1 + WalletRequestApproved = 2 + WalletRequestRejected = 3 + WalletRequestExecuted = 4 + MemberNoticeReal = 1 + MemberNoticeSimulation = 2 + MemberNoticeActive = 1 + MemberNoticeRevoked = 2 +) + +var ( + AppMemberStatusOptions = []*model.Option{ + dict.GenSuccessOption(AppMemberStatusNormal, "正常"), + dict.GenWarningOption(AppMemberStatusDisabled, "禁用"), + dict.GenErrorOption(AppMemberStatusCancelled, "已注销"), + } + AppMemberRiskStatusOptions = []*model.Option{ + dict.GenSuccessOption(AppMemberRiskNormal, "正常"), + dict.GenWarningOption(AppMemberRiskWatch, "观察"), + dict.GenErrorOption(AppMemberRiskBlocked, "拦截"), + } + AppMemberDispatchModeOptions = []*model.Option{ + dict.GenSuccessOption(AppMemberDispatchAuto, "自动"), + dict.GenDefaultOption(AppMemberDispatchManual, "手动"), + } + AppMemberCategoryOptions = []*model.Option{ + dict.GenSuccessOption(AppMemberCategoryReal, "真人"), + dict.GenWarningOption(AppMemberCategoryFake, "假人"), + } + PaymentAccountTypeOptions = []*model.Option{ + dict.GenPrimaryOption(PaymentAccountBank, "银行卡"), + dict.GenInfoOption(PaymentAccountDigital, "数字钱包"), + dict.GenSuccessOption(PaymentAccountUnionPay, "云闪付"), + dict.GenPrimaryOption(PaymentAccountAlipay, "支付宝"), + dict.GenSuccessOption(PaymentAccountWechat, "微信"), + } + WalletAdjustTypeOptions = []*model.Option{ + dict.GenSuccessOption(WalletAdjustReward, "奖励金"), + dict.GenPrimaryOption(WalletAdjustSupplement, "人工补账"), + dict.GenErrorOption(WalletAdjustDeduct, "差错扣回"), + dict.GenWarningOption(WalletAdjustReversal, "冲正"), + dict.GenDefaultOption(WalletAdjustOther, "其他"), + } + WalletDirectionOptions = []*model.Option{ + dict.GenSuccessOption(WalletDirectionIncome, "收入"), + dict.GenErrorOption(WalletDirectionExpense, "支出"), + } + WalletRequestStatusOptions = []*model.Option{ + dict.GenWarningOption(WalletRequestPending, "待审批"), + dict.GenPrimaryOption(WalletRequestApproved, "已通过"), + dict.GenErrorOption(WalletRequestRejected, "已拒绝"), + dict.GenSuccessOption(WalletRequestExecuted, "已执行"), + } + MemberNoticeSourceOptions = []*model.Option{ + dict.GenSuccessOption(MemberNoticeReal, "真实通知"), + dict.GenWarningOption(MemberNoticeSimulation, "运营模拟"), + } + MemberNoticeStatusOptions = []*model.Option{ + dict.GenSuccessOption(MemberNoticeActive, "有效"), + dict.GenErrorOption(MemberNoticeRevoked, "已撤回"), + } +) + +func init() { + dict.RegisterEnums("appMemberStatus", "会员状态", AppMemberStatusOptions) + dict.RegisterEnums("appMemberRiskStatus", "会员风控状态", AppMemberRiskStatusOptions) + dict.RegisterEnums("appMemberDispatchMode", "会员派单模式", AppMemberDispatchModeOptions) + dict.RegisterEnums("appMemberCategory", "会员类别", AppMemberCategoryOptions) + dict.RegisterEnums("paymentAccountType", "收款账户类型", PaymentAccountTypeOptions) + dict.RegisterEnums("walletAdjustType", "钱包调整类型", WalletAdjustTypeOptions) + dict.RegisterEnums("walletDirection", "钱包变更方向", WalletDirectionOptions) + dict.RegisterEnums("walletRequestStatus", "钱包调整状态", WalletRequestStatusOptions) + dict.RegisterEnums("memberNoticeSource", "会员通知来源", MemberNoticeSourceOptions) + dict.RegisterEnums("memberNoticeStatus", "会员通知状态", MemberNoticeStatusOptions) +} diff --git a/server/internal/consts/approval.go b/server/internal/consts/approval.go new file mode 100644 index 0000000..22311fb --- /dev/null +++ b/server/internal/consts/approval.go @@ -0,0 +1,66 @@ +package consts + +import ( + "hotgo/internal/library/dict" + "hotgo/internal/model" +) + +const ( + ApprovalStatusDraft = 1 + ApprovalStatusPending = 2 + ApprovalStatusReviewing = 3 + ApprovalStatusApproved = 4 + ApprovalStatusRejected = 5 + ApprovalStatusCancelled = 6 + ApprovalStatusExecuted = 7 + ApprovalStatusExecuteFailed = 8 +) + +const ( + ApprovalActionSubmit = 1 + ApprovalActionApprove = 2 + ApprovalActionReject = 3 + ApprovalActionReturn = 4 + ApprovalActionCancel = 5 + ApprovalActionExecute = 6 +) + +const ( + ApprovalRiskLow = 1 + ApprovalRiskMedium = 2 + ApprovalRiskHigh = 3 + ApprovalRiskCritical = 4 +) + +var ApprovalStatusOptions = []*model.Option{ + dict.GenDefaultOption(ApprovalStatusDraft, "草稿"), + dict.GenWarningOption(ApprovalStatusPending, "待审批"), + dict.GenPrimaryOption(ApprovalStatusReviewing, "审批中"), + dict.GenSuccessOption(ApprovalStatusApproved, "已通过"), + dict.GenErrorOption(ApprovalStatusRejected, "已驳回"), + dict.GenInfoOption(ApprovalStatusCancelled, "已取消"), + dict.GenSuccessOption(ApprovalStatusExecuted, "已执行"), + dict.GenErrorOption(ApprovalStatusExecuteFailed, "执行失败"), +} + +var ApprovalActionOptions = []*model.Option{ + dict.GenPrimaryOption(ApprovalActionSubmit, "提交"), + dict.GenSuccessOption(ApprovalActionApprove, "通过"), + dict.GenErrorOption(ApprovalActionReject, "驳回"), + dict.GenWarningOption(ApprovalActionReturn, "退回"), + dict.GenInfoOption(ApprovalActionCancel, "取消"), + dict.GenPrimaryOption(ApprovalActionExecute, "执行"), +} + +var ApprovalRiskLevelOptions = []*model.Option{ + dict.GenSuccessOption(ApprovalRiskLow, "低"), + dict.GenInfoOption(ApprovalRiskMedium, "中"), + dict.GenWarningOption(ApprovalRiskHigh, "高"), + dict.GenErrorOption(ApprovalRiskCritical, "极高"), +} + +func init() { + dict.RegisterEnums("approvalStatus", "审批状态", ApprovalStatusOptions) + dict.RegisterEnums("approvalAction", "审批动作", ApprovalActionOptions) + dict.RegisterEnums("approvalRiskLevel", "审批风险等级", ApprovalRiskLevelOptions) +} 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..b2ec551 --- /dev/null +++ b/server/internal/consts/cron.go @@ -0,0 +1,17 @@ +// 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..f09f57f --- /dev/null +++ b/server/internal/consts/pay.go @@ -0,0 +1,105 @@ +// 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支付 + PayTypeBalance = "balance" // 余额支付 + PayTypeBankTransfer = "bank_transfer" // 银行转账 + PayTypeManual = "manual" // 人工支付 +) + +var ( + PayTypeSlice = []string{ + PayTypeWxPay, PayTypeAliPay, PayTypeQQPay, PayTypeBalance, PayTypeBankTransfer, PayTypeManual, + } + + PayTypeNameMap = map[string]string{ + PayTypeALL: "全部", + PayTypeWxPay: "微信支付", + PayTypeAliPay: "支付宝", + PayTypeQQPay: "QQ支付", + PayTypeBalance: "余额支付", + PayTypeBankTransfer: "银行转账", + PayTypeManual: "人工支付", + } +) + +// 交易方式 + +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支付"), + dict.GenPrimaryOption(PayTypeBalance, "余额支付"), + dict.GenInfoOption(PayTypeBankTransfer, "银行转账"), + dict.GenWarningOption(PayTypeManual, "人工支付"), +} diff --git a/server/internal/consts/portal.go b/server/internal/consts/portal.go new file mode 100644 index 0000000..057a17c --- /dev/null +++ b/server/internal/consts/portal.go @@ -0,0 +1,70 @@ +package consts + +import ( + "hotgo/internal/library/dict" + "hotgo/internal/model" +) + +const ( + BizPublishDraft = 1 + BizPublishPending = 2 + BizPublishPublished = 3 + BizPublishOffline = 4 + BizPublishArchived = 5 + + BannerTargetNone = 1 + BannerTargetInternal = 2 + BannerTargetExternal = 3 + + ProductTypeStandard = 1 + ProductTypeManual = 2 + + SiteFeatureEnabled = 1 + SiteFeatureDisabled = 2 + + SiteProductModeProduct = 1 + SiteProductModeCreditCard = 2 +) + +var BizPublishStatusOptions = []*model.Option{ + dict.GenInfoOption(BizPublishDraft, "草稿"), + dict.GenWarningOption(BizPublishPending, "待审"), + dict.GenSuccessOption(BizPublishPublished, "已发布"), + dict.GenDefaultOption(BizPublishOffline, "已下线"), + dict.GenDefaultOption(BizPublishArchived, "已归档"), +} + +var BannerTargetTypeOptions = []*model.Option{ + dict.GenDefaultOption(BannerTargetNone, "无跳转"), + dict.GenPrimaryOption(BannerTargetInternal, "内部路由"), + dict.GenInfoOption(BannerTargetExternal, "外部链接"), +} + +var BannerPositionOptions = []*model.Option{ + dict.GenPrimaryOption("home_top", "首页顶部"), + dict.GenInfoOption("home_popup", "首页弹窗"), +} + +var ProductTypeOptions = []*model.Option{ + dict.GenPrimaryOption(ProductTypeStandard, "标准商品"), + dict.GenInfoOption(ProductTypeManual, "手工商城商品"), +} + +var SiteFeatureSwitchOptions = []*model.Option{ + dict.GenSuccessOption(SiteFeatureEnabled, "开启"), + dict.GenDefaultOption(SiteFeatureDisabled, "关闭"), +} + +var SiteProductModeOptions = []*model.Option{ + dict.GenPrimaryOption(SiteProductModeProduct, "商品"), + dict.GenInfoOption(SiteProductModeCreditCard, "信用卡"), +} + +func init() { + dict.RegisterEnums("bizPublishStatus", "业务发布状态", BizPublishStatusOptions) + dict.RegisterEnums("bannerTargetType", "Banner跳转类型", BannerTargetTypeOptions) + dict.RegisterEnums("bannerPosition", "Banner投放位置", BannerPositionOptions) + dict.RegisterEnums("productType", "商品类型", ProductTypeOptions) + dict.RegisterEnums("siteFeatureSwitch", "站点功能开关", SiteFeatureSwitchOptions) + dict.RegisterEnums("siteProductMode", "站点商城模式", SiteProductModeOptions) +} diff --git a/server/internal/consts/product_task.go b/server/internal/consts/product_task.go new file mode 100644 index 0000000..d68e71a --- /dev/null +++ b/server/internal/consts/product_task.go @@ -0,0 +1,26 @@ +package consts + +import ( + "hotgo/internal/library/dict" + "hotgo/internal/model" +) + +const ( + TaskSubmissionPending = 1 + TaskSubmissionApproved = 2 + TaskSubmissionRejected = 3 + TaskSubmissionSettled = 4 + TaskSubmissionReversed = 5 +) + +var TaskSubmissionStatusOptions = []*model.Option{ + dict.GenWarningOption(TaskSubmissionPending, "待审核"), + dict.GenPrimaryOption(TaskSubmissionApproved, "已通过"), + dict.GenErrorOption(TaskSubmissionRejected, "已驳回"), + dict.GenSuccessOption(TaskSubmissionSettled, "已结算"), + dict.GenDefaultOption(TaskSubmissionReversed, "已冲正"), +} + +func init() { + dict.RegisterEnums("taskSubmissionStatus", "会员任务审核状态", TaskSubmissionStatusOptions) +} 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..d105f6b --- /dev/null +++ b/server/internal/consts/queue.go @@ -0,0 +1,14 @@ +// 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/trade.go b/server/internal/consts/trade.go new file mode 100644 index 0000000..6cfad34 --- /dev/null +++ b/server/internal/consts/trade.go @@ -0,0 +1,122 @@ +package consts + +import ( + "hotgo/internal/library/dict" + "hotgo/internal/model" +) + +const ( + TradeOrderTypeProduct = 1 + TradeOrderTypeTask = 2 + TradeOrderTypeManual = 3 + + TradeOrderMatching = 1 + TradeOrderPending = 2 + TradeOrderProcessing = 3 + TradeOrderCompleted = 4 + TradeOrderTimeout = 5 + TradeOrderFrozen = 6 + TradeOrderCancelled = 7 + TradeOrderFailed = 8 + + TradeFreezeNormal = 1 + TradeFreezeFrozen = 2 + TradeFreezePending = 3 + + TradeActionCancelMatch = "cancel_match" + TradeActionRematch = "rematch" + TradeActionUnfreeze = "unfreeze" + + RechargeTypeOnline = 1 + RechargeTypeManual = 2 + + RechargeUnpaid = 1 + RechargeReview = 2 + RechargeSuccess = 3 + RechargeRejected = 4 + RechargeExpired = 5 + RechargeCancelled = 6 + + WithdrawalPending = 1 + WithdrawalReviewing = 2 + WithdrawalProcessing = 3 + WithdrawalSuccess = 4 + WithdrawalFailed = 5 + WithdrawalRejected = 6 + WithdrawalCancelled = 7 + + FinanceDecisionApprove = 1 + FinanceDecisionReject = 2 + + CustomerServiceOnline = 1 + CustomerServiceOffline = 2 + + TradeAutoDispatchEnabled = 1 + TradeAutoDispatchDisabled = 2 +) + +var TradeOrderTypeOptions = []*model.Option{ + dict.GenPrimaryOption(TradeOrderTypeProduct, "商品订单"), + dict.GenInfoOption(TradeOrderTypeTask, "任务订单"), + dict.GenDefaultOption(TradeOrderTypeManual, "手工商城"), +} +var TradeOrderStatusOptions = []*model.Option{ + dict.GenInfoOption(TradeOrderMatching, "匹配中"), + dict.GenWarningOption(TradeOrderPending, "待处理"), + dict.GenPrimaryOption(TradeOrderProcessing, "处理中"), + dict.GenSuccessOption(TradeOrderCompleted, "已完成"), + dict.GenWarningOption(TradeOrderTimeout, "已超时"), + dict.GenErrorOption(TradeOrderFrozen, "已冻结"), + dict.GenDefaultOption(TradeOrderCancelled, "已取消"), + dict.GenErrorOption(TradeOrderFailed, "失败"), +} +var TradeFreezeStatusOptions = []*model.Option{ + dict.GenSuccessOption(TradeFreezeNormal, "正常"), + dict.GenErrorOption(TradeFreezeFrozen, "已冻结"), + dict.GenWarningOption(TradeFreezePending, "解冻复核中"), +} +var RechargeTypeOptions = []*model.Option{ + dict.GenPrimaryOption(RechargeTypeOnline, "线上支付"), + dict.GenInfoOption(RechargeTypeManual, "人工充值"), +} +var RechargeStatusOptions = []*model.Option{ + dict.GenDefaultOption(RechargeUnpaid, "用户未支付"), + dict.GenWarningOption(RechargeReview, "手动审核"), + dict.GenSuccessOption(RechargeSuccess, "已入账"), + dict.GenErrorOption(RechargeRejected, "手动驳回"), + dict.GenDefaultOption(RechargeExpired, "已过期"), + dict.GenDefaultOption(RechargeCancelled, "已取消"), +} +var WithdrawalStatusOptions = []*model.Option{ + dict.GenWarningOption(WithdrawalPending, "待初审"), + dict.GenWarningOption(WithdrawalReviewing, "复核中"), + dict.GenPrimaryOption(WithdrawalProcessing, "付款中"), + dict.GenSuccessOption(WithdrawalSuccess, "已到账"), + dict.GenErrorOption(WithdrawalFailed, "付款失败"), + dict.GenErrorOption(WithdrawalRejected, "已驳回"), + dict.GenDefaultOption(WithdrawalCancelled, "已取消"), +} +var FinanceDecisionOptions = []*model.Option{ + dict.GenSuccessOption(FinanceDecisionApprove, "通过"), + dict.GenErrorOption(FinanceDecisionReject, "驳回"), +} +var CustomerServiceOnlineOptions = []*model.Option{ + dict.GenSuccessOption(CustomerServiceOnline, "在线"), + dict.GenDefaultOption(CustomerServiceOffline, "离线"), +} +var TradeAutoDispatchOptions = []*model.Option{ + dict.GenSuccessOption(TradeAutoDispatchEnabled, "自动派单"), + dict.GenDefaultOption(TradeAutoDispatchDisabled, "手动领取"), +} + +func init() { + dict.RegisterEnums("tradeOrderType", "交易订单类型", TradeOrderTypeOptions) + dict.RegisterEnums("tradeOrderStatus", "交易订单状态", TradeOrderStatusOptions) + dict.RegisterEnums("tradeFreezeStatus", "交易冻结状态", TradeFreezeStatusOptions) + dict.RegisterEnums("rechargeType", "充值类型", RechargeTypeOptions) + dict.RegisterEnums("rechargeStatus", "充值状态", RechargeStatusOptions) + dict.RegisterEnums("withdrawalStatus", "提现状态", WithdrawalStatusOptions) + dict.RegisterEnums("financeDecision", "财务审核结论", FinanceDecisionOptions) + dict.RegisterEnums("customerServiceOnline", "客服在线状态", CustomerServiceOnlineOptions) + dict.RegisterEnums("tradeAutoDispatch", "交易派单方式", TradeAutoDispatchOptions) +} 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..be4f73b --- /dev/null +++ b/server/internal/controller/admin/common/console.go @@ -0,0 +1,51 @@ +// 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 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 +} + +func (c *cConsole) Summary(ctx context.Context, req *common.DashboardSummaryReq) (res *common.DashboardSummaryRes, err error) { + data, err := service.SysDashboard().Summary(ctx, &req.DashboardSummaryInp) + if err != nil { + return nil, err + } + return &common.DashboardSummaryRes{DashboardSummaryModel: data}, nil +} 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..34296a6 --- /dev/null +++ b/server/internal/controller/admin/common/site.go @@ -0,0 +1,155 @@ +// 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/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 = "企业办公管理系统" + 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/app_member.go b/server/internal/controller/admin/sys/app_member.go new file mode 100644 index 0000000..d5e7d7c --- /dev/null +++ b/server/internal/controller/admin/sys/app_member.go @@ -0,0 +1,157 @@ +package sys + +import ( + "context" + "hotgo/api/admin/appmember" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var AppMember = cAppMember{} + +type cAppMember struct{} + +func (c *cAppMember) List(ctx context.Context, req *appmember.ListReq) (res *appmember.ListRes, err error) { + list, total, err := service.SysAppMember().List(ctx, &req.AppMemberListInp) + if err != nil { + return + } + if list == nil { + list = []*sysin.AppMemberListModel{} + } + res = new(appmember.ListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cAppMember) View(ctx context.Context, req *appmember.ViewReq) (res *appmember.ViewRes, err error) { + data, err := service.SysAppMember().View(ctx, &req.AppMemberViewInp) + if err != nil { + return + } + res = &appmember.ViewRes{AppMemberViewModel: data} + return +} +func (c *cAppMember) Edit(ctx context.Context, req *appmember.EditReq) (*appmember.EditRes, error) { + return &appmember.EditRes{}, service.SysAppMember().Edit(ctx, &req.AppMemberEditInp) +} +func (c *cAppMember) Delete(ctx context.Context, req *appmember.DeleteReq) (*appmember.DeleteRes, error) { + return &appmember.DeleteRes{}, service.SysAppMember().Delete(ctx, &req.AppMemberDeleteInp) +} +func (c *cAppMember) AutoDispatch(ctx context.Context, req *appmember.AutoDispatchReq) (*appmember.AutoDispatchRes, error) { + return &appmember.AutoDispatchRes{}, service.SysAppMember().AutoDispatch(ctx, &req.AppMemberAutoDispatchInp) +} +func (c *cAppMember) Category(ctx context.Context, req *appmember.CategoryReq) (*appmember.CategoryRes, error) { + return &appmember.CategoryRes{}, service.SysAppMember().Category(ctx, &req.AppMemberCategoryInp) +} +func (c *cAppMember) PaymentList(ctx context.Context, req *appmember.PaymentListReq) (*appmember.PaymentListRes, error) { + list, err := service.SysAppMember().PaymentList(ctx, &req.AppMemberPaymentListInp) + if list == nil { + list = []*sysin.AppMemberPaymentModel{} + } + return &appmember.PaymentListRes{List: list}, err +} +func (c *cAppMember) PaymentEdit(ctx context.Context, req *appmember.PaymentEditReq) (*appmember.PaymentEditRes, error) { + return &appmember.PaymentEditRes{}, service.SysAppMember().PaymentEdit(ctx, &req.AppMemberPaymentEditInp) +} +func (c *cAppMember) PaymentDelete(ctx context.Context, req *appmember.PaymentDeleteReq) (*appmember.PaymentDeleteRes, error) { + return &appmember.PaymentDeleteRes{}, service.SysAppMember().PaymentDelete(ctx, &req.AppMemberPaymentDeleteInp) +} +func (c *cAppMember) AddressList(ctx context.Context, req *appmember.AddressListReq) (*appmember.AddressListRes, error) { + list, err := service.SysAppMember().AddressList(ctx, &req.AppMemberAddressListInp) + if list == nil { + list = []*sysin.AppMemberAddressModel{} + } + return &appmember.AddressListRes{List: list}, err +} +func (c *cAppMember) AddressEdit(ctx context.Context, req *appmember.AddressEditReq) (*appmember.AddressEditRes, error) { + return &appmember.AddressEditRes{}, service.SysAppMember().AddressEdit(ctx, &req.AppMemberAddressEditInp) +} +func (c *cAppMember) AddressDelete(ctx context.Context, req *appmember.AddressDeleteReq) (*appmember.AddressDeleteRes, error) { + return &appmember.AddressDeleteRes{}, service.SysAppMember().AddressDelete(ctx, &req.AppMemberAddressDeleteInp) +} +func (c *cAppMember) Sensitive(ctx context.Context, req *appmember.SensitiveReq) (res *appmember.SensitiveRes, err error) { + data, err := service.SysAppMember().Sensitive(ctx, &req.AppMemberSensitiveInp) + if err != nil { + return + } + return &appmember.SensitiveRes{AppMemberSensitiveModel: data}, nil +} +func (c *cAppMember) Team(ctx context.Context, req *appmember.TeamReq) (res *appmember.TeamRes, err error) { + list, total, err := service.SysAppMember().Team(ctx, &req.AppMemberTeamInp) + if err != nil { + return + } + if list == nil { + list = []*sysin.AppMemberTeamModel{} + } + res = new(appmember.TeamRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cAppMember) StatusRequest(ctx context.Context, req *appmember.StatusRequestReq) (res *appmember.StatusRequestRes, err error) { + data, err := service.SysAppMember().StatusRequest(ctx, &req.AppMemberStatusRequestInp) + if err != nil { + return + } + return &appmember.StatusRequestRes{AppMemberApprovalModel: data}, nil +} +func (c *cAppMember) StatusExecute(ctx context.Context, req *appmember.StatusExecuteReq) (*appmember.StatusExecuteRes, error) { + return &appmember.StatusExecuteRes{}, service.SysAppMember().StatusExecute(ctx, &req.AppMemberStatusExecuteInp) +} +func (c *cAppMember) WalletList(ctx context.Context, req *appmember.WalletListReq) (res *appmember.WalletListRes, err error) { + list, total, err := service.SysAppMember().WalletList(ctx, &req.WalletAdjustmentListInp) + if err != nil { + return + } + if list == nil { + list = []*sysin.WalletAdjustmentListModel{} + } + res = new(appmember.WalletListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cAppMember) LedgerList(ctx context.Context, req *appmember.LedgerListReq) (res *appmember.LedgerListRes, err error) { + list, total, err := service.SysAppMember().LedgerList(ctx, &req.WalletLedgerListInp) + if err != nil { + return nil, err + } + if list == nil { + list = []*sysin.WalletLedgerListModel{} + } + res = new(appmember.LedgerListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cAppMember) WalletRequest(ctx context.Context, req *appmember.WalletRequestReq) (res *appmember.WalletRequestRes, err error) { + data, err := service.SysAppMember().WalletRequest(ctx, &req.WalletAdjustmentRequestInp) + if err != nil { + return + } + return &appmember.WalletRequestRes{AppMemberApprovalModel: data}, nil +} +func (c *cAppMember) WalletExecute(ctx context.Context, req *appmember.WalletExecuteReq) (*appmember.WalletExecuteRes, error) { + return &appmember.WalletExecuteRes{}, service.SysAppMember().WalletExecute(ctx, &req.WalletAdjustmentExecuteInp) +} +func (c *cAppMember) NoticeList(ctx context.Context, req *appmember.NoticeListReq) (res *appmember.NoticeListRes, err error) { + list, total, err := service.SysAppMember().NoticeList(ctx, &req.MemberNoticeListInp) + if err != nil { + return + } + if list == nil { + list = []*sysin.MemberNoticeListModel{} + } + res = new(appmember.NoticeListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cAppMember) NoticeEdit(ctx context.Context, req *appmember.NoticeEditReq) (*appmember.NoticeEditRes, error) { + return &appmember.NoticeEditRes{}, service.SysAppMember().NoticeEdit(ctx, &req.MemberNoticeEditInp) +} +func (c *cAppMember) NoticeRevoke(ctx context.Context, req *appmember.NoticeRevokeReq) (*appmember.NoticeRevokeRes, error) { + return &appmember.NoticeRevokeRes{}, service.SysAppMember().NoticeRevoke(ctx, &req.MemberNoticeRevokeInp) +} diff --git a/server/internal/controller/admin/sys/approval.go b/server/internal/controller/admin/sys/approval.go new file mode 100644 index 0000000..4d67ba9 --- /dev/null +++ b/server/internal/controller/admin/sys/approval.go @@ -0,0 +1,64 @@ +package sys + +import ( + "context" + "hotgo/api/admin/approval" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var Approval = cApproval{} + +type cApproval struct{} + +func (c *cApproval) List(ctx context.Context, req *approval.ListReq) (res *approval.ListRes, err error) { + list, totalCount, err := service.SysApproval().List(ctx, &req.ApprovalListInp) + if err != nil { + return + } + if list == nil { + list = []*sysin.ApprovalListModel{} + } + res = new(approval.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +func (c *cApproval) View(ctx context.Context, req *approval.ViewReq) (res *approval.ViewRes, err error) { + data, err := service.SysApproval().View(ctx, &req.ApprovalViewInp) + if err != nil { + return nil, err + } + res = &approval.ViewRes{ApprovalViewModel: data} + return +} + +func (c *cApproval) Create(ctx context.Context, req *approval.CreateReq) (res *approval.CreateRes, err error) { + data, err := service.SysApproval().Create(ctx, &req.ApprovalCreateInp) + if err != nil { + return nil, err + } + res = &approval.CreateRes{ApprovalCreateModel: data} + return +} + +func (c *cApproval) Submit(ctx context.Context, req *approval.SubmitReq) (res *approval.SubmitRes, err error) { + err = service.SysApproval().Submit(ctx, &req.ApprovalSubmitInp) + return +} + +func (c *cApproval) Approve(ctx context.Context, req *approval.ApproveReq) (res *approval.ApproveRes, err error) { + err = service.SysApproval().Approve(ctx, &req.ApprovalDecisionInp) + return +} + +func (c *cApproval) Reject(ctx context.Context, req *approval.RejectReq) (res *approval.RejectRes, err error) { + err = service.SysApproval().Reject(ctx, &req.ApprovalDecisionInp) + return +} + +func (c *cApproval) Cancel(ctx context.Context, req *approval.CancelReq) (res *approval.CancelRes, err error) { + err = service.SysApproval().Cancel(ctx, &req.ApprovalCancelInp) + 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/biz_audit.go b/server/internal/controller/admin/sys/biz_audit.go new file mode 100644 index 0000000..94c29c1 --- /dev/null +++ b/server/internal/controller/admin/sys/biz_audit.go @@ -0,0 +1,34 @@ +package sys + +import ( + "context" + "hotgo/api/admin/bizaudit" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var BizAudit = cBizAudit{} + +type cBizAudit struct{} + +func (c *cBizAudit) List(ctx context.Context, req *bizaudit.ListReq) (res *bizaudit.ListRes, err error) { + list, totalCount, err := service.SysBizAudit().List(ctx, &req.BizAuditListInp) + if err != nil { + return nil, err + } + if list == nil { + list = []*sysin.BizAuditListModel{} + } + res = new(bizaudit.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +func (c *cBizAudit) View(ctx context.Context, req *bizaudit.ViewReq) (res *bizaudit.ViewRes, err error) { + data, err := service.SysBizAudit().View(ctx, &req.BizAuditViewInp) + if err != nil { + return nil, err + } + return &bizaudit.ViewRes{BizAuditViewModel: data}, nil +} 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..ace44e3 --- /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 +} \ No newline at end of file diff --git a/server/internal/controller/admin/sys/customer_service.go b/server/internal/controller/admin/sys/customer_service.go new file mode 100644 index 0000000..17b8eed --- /dev/null +++ b/server/internal/controller/admin/sys/customer_service.go @@ -0,0 +1,40 @@ +package sys + +import ( + "context" + + "hotgo/api/admin/customerservice" + "hotgo/internal/model/entity" + "hotgo/internal/service" +) + +var CustomerService = cCustomerService{} + +type cCustomerService struct{} + +func (c *cCustomerService) List(ctx context.Context, req *customerservice.ListReq) (res *customerservice.ListRes, err error) { + list, total, err := service.SysCustomerService().List(ctx, &req.CustomerServiceListInp) + if err != nil { + return nil, err + } + if list == nil { + list = []*entity.CustomerService{} + } + res = new(customerservice.ListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cCustomerService) View(ctx context.Context, req *customerservice.ViewReq) (*customerservice.ViewRes, error) { + v, err := service.SysCustomerService().View(ctx, &req.CustomerServiceViewInp) + return &customerservice.ViewRes{CustomerService: v}, err +} +func (c *cCustomerService) Edit(ctx context.Context, req *customerservice.EditReq) (*customerservice.EditRes, error) { + return &customerservice.EditRes{}, service.SysCustomerService().Edit(ctx, &req.CustomerServiceEditInp) +} +func (c *cCustomerService) Status(ctx context.Context, req *customerservice.StatusReq) (*customerservice.StatusRes, error) { + return &customerservice.StatusRes{}, service.SysCustomerService().Status(ctx, &req.CustomerServiceStatusInp) +} +func (c *cCustomerService) Delete(ctx context.Context, req *customerservice.DeleteReq) (*customerservice.DeleteRes, error) { + return &customerservice.DeleteRes{}, service.SysCustomerService().Delete(ctx, &req.CustomerServiceDeleteInp) +} 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/member_level.go b/server/internal/controller/admin/sys/member_level.go new file mode 100644 index 0000000..151d785 --- /dev/null +++ b/server/internal/controller/admin/sys/member_level.go @@ -0,0 +1,71 @@ +package sys + +import ( + "context" + "hotgo/api/admin/memberlevel" + "hotgo/internal/model/entity" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var MemberLevel = cMemberLevel{} + +type cMemberLevel struct{} + +func (c *cMemberLevel) List(ctx context.Context, req *memberlevel.ListReq) (res *memberlevel.ListRes, err error) { + list, total, err := service.SysMemberLevel().List(ctx, &req.MemberLevelListInp) + if err != nil { + return + } + if list == nil { + list = []*sysin.MemberLevelListModel{} + } + res = new(memberlevel.ListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cMemberLevel) View(ctx context.Context, req *memberlevel.ViewReq) (res *memberlevel.ViewRes, err error) { + v, err := service.SysMemberLevel().View(ctx, &req.MemberLevelViewInp) + if err != nil { + return + } + return &memberlevel.ViewRes{MemberLevelViewModel: v}, nil +} +func (c *cMemberLevel) Save(ctx context.Context, req *memberlevel.SaveReq) (res *memberlevel.SaveRes, err error) { + id, vid, err := service.SysMemberLevel().Save(ctx, &req.MemberLevelSaveInp) + return &memberlevel.SaveRes{Id: id, VersionId: vid}, err +} +func (c *cMemberLevel) Submit(ctx context.Context, req *memberlevel.SubmitReq) (res *memberlevel.SubmitRes, err error) { + v, err := service.SysMemberLevel().Submit(ctx, &req.MemberLevelSubmitInp) + if err != nil { + return + } + return &memberlevel.SubmitRes{MemberLevelApprovalModel: v}, nil +} +func (c *cMemberLevel) Publish(ctx context.Context, req *memberlevel.PublishReq) (*memberlevel.PublishRes, error) { + return &memberlevel.PublishRes{}, service.SysMemberLevel().Publish(ctx, &req.MemberLevelPublishInp) +} +func (c *cMemberLevel) Rollback(ctx context.Context, req *memberlevel.RollbackReq) (*memberlevel.RollbackRes, error) { + id, err := service.SysMemberLevel().Rollback(ctx, &req.MemberLevelRollbackInp) + return &memberlevel.RollbackRes{VersionId: id}, err +} +func (c *cMemberLevel) History(ctx context.Context, req *memberlevel.HistoryReq) (res *memberlevel.HistoryRes, err error) { + list, total, err := service.SysMemberLevel().History(ctx, &req.MemberLevelHistoryInp) + if err != nil { + return + } + if list == nil { + list = []*entity.AppMemberLevelVersion{} + } + res = new(memberlevel.HistoryRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cMemberLevel) Status(ctx context.Context, req *memberlevel.StatusReq) (*memberlevel.StatusRes, error) { + return &memberlevel.StatusRes{}, service.SysMemberLevel().Status(ctx, &req.MemberLevelStatusInp) +} +func (c *cMemberLevel) Delete(ctx context.Context, req *memberlevel.DeleteReq) (*memberlevel.DeleteRes, error) { + return &memberlevel.DeleteRes{}, service.SysMemberLevel().Delete(ctx, &req.MemberLevelDeleteInp) +} 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..5ec4a1c --- /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 +} \ No newline at end of file diff --git a/server/internal/controller/admin/sys/portal.go b/server/internal/controller/admin/sys/portal.go new file mode 100644 index 0000000..8c387ff --- /dev/null +++ b/server/internal/controller/admin/sys/portal.go @@ -0,0 +1,168 @@ +package sys + +import ( + "context" + "hotgo/api/admin/portal" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var Portal = cPortal{} + +type cPortal struct{} + +func (c *cPortal) SiteConfigCurrent(ctx context.Context, req *portal.SiteConfigCurrentReq) (res *portal.SiteConfigCurrentRes, err error) { + data, err := service.SysPortal().SiteConfigCurrent(ctx, &req.SiteConfigCurrentInp) + if err != nil { + return + } + res = &portal.SiteConfigCurrentRes{SiteConfigCurrentModel: data} + return +} +func (c *cPortal) SiteConfigHistory(ctx context.Context, req *portal.SiteConfigHistoryReq) (res *portal.SiteConfigHistoryRes, err error) { + list, total, err := service.SysPortal().SiteConfigHistory(ctx, &req.SiteConfigHistoryInp) + if err != nil { + return + } + if list == nil { + list = []*sysin.SiteConfigHistoryModel{} + } + res = new(portal.SiteConfigHistoryRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cPortal) SiteConfigSave(ctx context.Context, req *portal.SiteConfigSaveReq) (res *portal.SiteConfigSaveRes, err error) { + id, err := service.SysPortal().SiteConfigSave(ctx, &req.SiteConfigSaveInp) + if err == nil { + res = &portal.SiteConfigSaveRes{Id: id} + } + return +} +func (c *cPortal) SiteConfigSubmit(ctx context.Context, req *portal.SiteConfigSubmitReq) (res *portal.SiteConfigSubmitRes, err error) { + data, err := service.SysPortal().SiteConfigSubmit(ctx, &req.SiteConfigSubmitInp) + if err == nil { + res = &portal.SiteConfigSubmitRes{PortalApprovalModel: data} + } + return +} +func (c *cPortal) SiteConfigPublish(ctx context.Context, req *portal.SiteConfigPublishReq) (res *portal.SiteConfigPublishRes, err error) { + err = service.SysPortal().SiteConfigPublish(ctx, &req.SiteConfigPublishInp) + return +} +func (c *cPortal) SiteConfigRollback(ctx context.Context, req *portal.SiteConfigRollbackReq) (res *portal.SiteConfigRollbackRes, err error) { + id, err := service.SysPortal().SiteConfigRollback(ctx, &req.SiteConfigRollbackInp) + if err == nil { + res = &portal.SiteConfigRollbackRes{Id: id} + } + return +} +func (c *cPortal) ContentList(ctx context.Context, req *portal.ContentListReq) (res *portal.ContentListRes, err error) { + list, total, err := service.SysPortal().ContentList(ctx, &req.ContentListInp) + if err != nil { + return + } + if list == nil { + list = []*sysin.ContentListModel{} + } + res = new(portal.ContentListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cPortal) ContentView(ctx context.Context, req *portal.ContentViewReq) (res *portal.ContentViewRes, err error) { + data, err := service.SysPortal().ContentView(ctx, &req.ContentViewInp) + if err == nil { + res = &portal.ContentViewRes{ContentViewModel: data} + } + return +} +func (c *cPortal) ContentEdit(ctx context.Context, req *portal.ContentEditReq) (res *portal.ContentEditRes, err error) { + id, err := service.SysPortal().ContentEdit(ctx, &req.ContentEditInp) + if err == nil { + res = &portal.ContentEditRes{Id: id} + } + return +} +func (c *cPortal) ContentDelete(ctx context.Context, req *portal.ContentDeleteReq) (res *portal.ContentDeleteRes, err error) { + err = service.SysPortal().ContentDelete(ctx, &req.ContentDeleteInp) + return +} +func (c *cPortal) ContentPublish(ctx context.Context, req *portal.ContentPublishReq) (res *portal.ContentPublishRes, err error) { + err = service.SysPortal().ContentPublish(ctx, &req.ContentPublishInp) + return +} +func (c *cPortal) ContentOffline(ctx context.Context, req *portal.ContentOfflineReq) (res *portal.ContentOfflineRes, err error) { + err = service.SysPortal().ContentOffline(ctx, &req.ContentOfflineInp) + return +} +func (c *cPortal) BannerList(ctx context.Context, req *portal.BannerListReq) (res *portal.BannerListRes, err error) { + list, total, err := service.SysPortal().BannerList(ctx, &req.BannerListInp) + if err != nil { + return + } + if list == nil { + list = []*sysin.BannerListModel{} + } + res = new(portal.BannerListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cPortal) BannerView(ctx context.Context, req *portal.BannerViewReq) (res *portal.BannerViewRes, err error) { + data, err := service.SysPortal().BannerView(ctx, &req.BannerViewInp) + if err == nil { + res = &portal.BannerViewRes{Banner: data} + } + return +} +func (c *cPortal) BannerEdit(ctx context.Context, req *portal.BannerEditReq) (res *portal.BannerEditRes, err error) { + id, err := service.SysPortal().BannerEdit(ctx, &req.BannerEditInp) + if err == nil { + res = &portal.BannerEditRes{Id: id} + } + return +} +func (c *cPortal) BannerDelete(ctx context.Context, req *portal.BannerDeleteReq) (res *portal.BannerDeleteRes, err error) { + err = service.SysPortal().BannerDelete(ctx, &req.BannerDeleteInp) + return +} +func (c *cPortal) BannerStatus(ctx context.Context, req *portal.BannerStatusReq) (res *portal.BannerStatusRes, err error) { + err = service.SysPortal().BannerStatus(ctx, &req.BannerStatusInp) + return +} +func (c *cPortal) ManualProductList(ctx context.Context, req *portal.ManualProductListReq) (res *portal.ManualProductListRes, err error) { + list, total, err := service.SysPortal().ManualProductList(ctx, &req.ManualProductListInp) + if err != nil { + return + } + if list == nil { + list = []*sysin.ManualProductListModel{} + } + res = new(portal.ManualProductListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cPortal) ManualProductView(ctx context.Context, req *portal.ManualProductViewReq) (res *portal.ManualProductViewRes, err error) { + data, err := service.SysPortal().ManualProductView(ctx, &req.ManualProductViewInp) + if err == nil { + res = &portal.ManualProductViewRes{ManualProductViewModel: data} + } + return +} +func (c *cPortal) ManualProductEdit(ctx context.Context, req *portal.ManualProductEditReq) (res *portal.ManualProductEditRes, err error) { + id, err := service.SysPortal().ManualProductEdit(ctx, &req.ManualProductEditInp) + if err == nil { + res = &portal.ManualProductEditRes{Id: id} + } + return +} +func (c *cPortal) ManualProductDelete(ctx context.Context, req *portal.ManualProductDeleteReq) (res *portal.ManualProductDeleteRes, err error) { + err = service.SysPortal().ManualProductDelete(ctx, &req.ManualProductDeleteInp) + return +} +func (c *cPortal) ManualProductStatus(ctx context.Context, req *portal.ManualProductStatusReq) (res *portal.ManualProductStatusRes, err error) { + err = service.SysPortal().ManualProductStatus(ctx, &req.ManualProductStatusInp) + return +} diff --git a/server/internal/controller/admin/sys/product.go b/server/internal/controller/admin/sys/product.go new file mode 100644 index 0000000..c0bacdd --- /dev/null +++ b/server/internal/controller/admin/sys/product.go @@ -0,0 +1,52 @@ +package sys + +import ( + "context" + "hotgo/api/admin/product" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var Product = cProduct{} + +type cProduct struct{} + +func (c *cProduct) List(ctx context.Context, req *product.ListReq) (res *product.ListRes, err error) { + list, total, err := service.SysProduct().List(ctx, &req.ProductListInp) + if err != nil { + return nil, err + } + if list == nil { + list = []*sysin.ProductListModel{} + } + res = new(product.ListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cProduct) View(ctx context.Context, req *product.ViewReq) (res *product.ViewRes, err error) { + data, err := service.SysProduct().View(ctx, &req.ProductViewInp) + if err == nil { + res = &product.ViewRes{ProductListModel: data} + } + return res, err +} +func (c *cProduct) Edit(ctx context.Context, req *product.EditReq) (res *product.EditRes, err error) { + id, err := service.SysProduct().Edit(ctx, &req.ProductEditInp) + if err == nil { + res = &product.EditRes{Id: id} + } + return res, err +} +func (c *cProduct) Status(ctx context.Context, req *product.StatusReq) (res *product.StatusRes, err error) { + err = service.SysProduct().Status(ctx, &req.ProductStatusInp) + return +} +func (c *cProduct) Recommend(ctx context.Context, req *product.RecommendReq) (res *product.RecommendRes, err error) { + err = service.SysProduct().Recommend(ctx, &req.ProductRecommendInp) + return +} +func (c *cProduct) Delete(ctx context.Context, req *product.DeleteReq) (res *product.DeleteRes, err error) { + err = service.SysProduct().Delete(ctx, &req.ProductDeleteInp) + 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/recharge_order.go b/server/internal/controller/admin/sys/recharge_order.go new file mode 100644 index 0000000..ff55c87 --- /dev/null +++ b/server/internal/controller/admin/sys/recharge_order.go @@ -0,0 +1,42 @@ +package sys + +import ( + "context" + + "hotgo/api/admin/rechargeorder" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var RechargeOrder = cRechargeOrder{} + +type cRechargeOrder struct{} + +func (c *cRechargeOrder) List(ctx context.Context, req *rechargeorder.ListReq) (res *rechargeorder.ListRes, err error) { + list, total, err := service.SysRechargeOrder().List(ctx, &req.RechargeOrderListInp) + if err != nil { + return nil, err + } + if list == nil { + list = []*sysin.RechargeOrderListModel{} + } + res = new(rechargeorder.ListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cRechargeOrder) Summary(ctx context.Context, req *rechargeorder.SummaryReq) (*rechargeorder.SummaryRes, error) { + v, err := service.SysRechargeOrder().Summary(ctx, &req.RechargeOrderListInp) + return &rechargeorder.SummaryRes{RechargeSummaryModel: v}, err +} +func (c *cRechargeOrder) View(ctx context.Context, req *rechargeorder.ViewReq) (*rechargeorder.ViewRes, error) { + v, err := service.SysRechargeOrder().View(ctx, &req.RechargeOrderViewInp) + return &rechargeorder.ViewRes{RechargeOrderListModel: v}, err +} +func (c *cRechargeOrder) Review(ctx context.Context, req *rechargeorder.ReviewReq) (*rechargeorder.ReviewRes, error) { + v, err := service.SysRechargeOrder().Review(ctx, &req.RechargeReviewInp) + return &rechargeorder.ReviewRes{FinanceApprovalModel: v}, err +} +func (c *cRechargeOrder) Execute(ctx context.Context, req *rechargeorder.ExecuteReq) (*rechargeorder.ExecuteRes, error) { + return &rechargeorder.ExecuteRes{}, service.SysRechargeOrder().Execute(ctx, &req.FinanceExecuteInp) +} 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/task.go b/server/internal/controller/admin/sys/task.go new file mode 100644 index 0000000..3afad16 --- /dev/null +++ b/server/internal/controller/admin/sys/task.go @@ -0,0 +1,48 @@ +package sys + +import ( + "context" + "hotgo/api/admin/task" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var Task = cTask{} + +type cTask struct{} + +func (c *cTask) List(ctx context.Context, req *task.ListReq) (res *task.ListRes, err error) { + list, total, err := service.SysTask().List(ctx, &req.TaskListInp) + if err != nil { + return nil, err + } + if list == nil { + list = []*sysin.TaskListModel{} + } + res = new(task.ListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cTask) View(ctx context.Context, req *task.ViewReq) (res *task.ViewRes, err error) { + data, err := service.SysTask().View(ctx, &req.TaskViewInp) + if err == nil { + res = &task.ViewRes{TaskListModel: data} + } + return res, err +} +func (c *cTask) Edit(ctx context.Context, req *task.EditReq) (res *task.EditRes, err error) { + id, err := service.SysTask().Edit(ctx, &req.TaskEditInp) + if err == nil { + res = &task.EditRes{Id: id} + } + return res, err +} +func (c *cTask) Status(ctx context.Context, req *task.StatusReq) (res *task.StatusRes, err error) { + err = service.SysTask().Status(ctx, &req.TaskStatusInp) + return +} +func (c *cTask) Delete(ctx context.Context, req *task.DeleteReq) (res *task.DeleteRes, err error) { + err = service.SysTask().Delete(ctx, &req.TaskDeleteInp) + return +} diff --git a/server/internal/controller/admin/sys/task_hall.go b/server/internal/controller/admin/sys/task_hall.go new file mode 100644 index 0000000..60306ea --- /dev/null +++ b/server/internal/controller/admin/sys/task_hall.go @@ -0,0 +1,42 @@ +package sys + +import ( + "context" + "hotgo/api/admin/taskhall" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var TaskHall = cTaskHall{} + +type cTaskHall struct{} + +func (c *cTaskHall) List(ctx context.Context, req *taskhall.ListReq) (res *taskhall.ListRes, err error) { + list, total, err := service.SysTaskHall().List(ctx, &req.TaskHallListInp) + if err != nil { + return + } + if list == nil { + list = []*sysin.TaskHallListModel{} + } + res = new(taskhall.ListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cTaskHall) View(ctx context.Context, req *taskhall.ViewReq) (res *taskhall.ViewRes, err error) { + v, err := service.SysTaskHall().View(ctx, &req.TaskHallViewInp) + if err != nil { + return + } + return &taskhall.ViewRes{TaskHallListModel: v}, nil +} +func (c *cTaskHall) Edit(ctx context.Context, req *taskhall.EditReq) (*taskhall.EditRes, error) { + return &taskhall.EditRes{}, service.SysTaskHall().Edit(ctx, &req.TaskHallEditInp) +} +func (c *cTaskHall) Status(ctx context.Context, req *taskhall.StatusReq) (*taskhall.StatusRes, error) { + return &taskhall.StatusRes{}, service.SysTaskHall().Status(ctx, &req.TaskHallStatusInp) +} +func (c *cTaskHall) Delete(ctx context.Context, req *taskhall.DeleteReq) (*taskhall.DeleteRes, error) { + return &taskhall.DeleteRes{}, service.SysTaskHall().Delete(ctx, &req.TaskHallDeleteInp) +} diff --git a/server/internal/controller/admin/sys/task_submission.go b/server/internal/controller/admin/sys/task_submission.go new file mode 100644 index 0000000..80ff33d --- /dev/null +++ b/server/internal/controller/admin/sys/task_submission.go @@ -0,0 +1,37 @@ +package sys + +import ( + "context" + "hotgo/api/admin/tasksubmission" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var TaskSubmission = cTaskSubmission{} + +type cTaskSubmission struct{} + +func (c *cTaskSubmission) List(ctx context.Context, req *tasksubmission.ListReq) (res *tasksubmission.ListRes, err error) { + list, total, err := service.SysTaskSubmission().List(ctx, &req.TaskSubmissionListInp) + if err != nil { + return nil, err + } + if list == nil { + list = []*sysin.TaskSubmissionListModel{} + } + res = new(tasksubmission.ListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cTaskSubmission) View(ctx context.Context, req *tasksubmission.ViewReq) (res *tasksubmission.ViewRes, err error) { + data, err := service.SysTaskSubmission().View(ctx, &req.TaskSubmissionViewInp) + if err == nil { + res = &tasksubmission.ViewRes{TaskSubmissionListModel: data} + } + return res, err +} +func (c *cTaskSubmission) Review(ctx context.Context, req *tasksubmission.ReviewReq) (res *tasksubmission.ReviewRes, err error) { + err = service.SysTaskSubmission().Review(ctx, &req.TaskSubmissionReviewInp) + 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/admin/sys/trade_order.go b/server/internal/controller/admin/sys/trade_order.go new file mode 100644 index 0000000..aa14bc5 --- /dev/null +++ b/server/internal/controller/admin/sys/trade_order.go @@ -0,0 +1,54 @@ +package sys + +import ( + "context" + + "hotgo/api/admin/tradeorder" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var TradeOrder = cTradeOrder{} + +type cTradeOrder struct{} + +func (c *cTradeOrder) List(ctx context.Context, req *tradeorder.ListReq) (res *tradeorder.ListRes, err error) { + list, total, err := service.SysTradeOrder().List(ctx, &req.TradeOrderListInp) + if err != nil { + return nil, err + } + if list == nil { + list = []*sysin.TradeOrderListModel{} + } + res = new(tradeorder.ListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cTradeOrder) View(ctx context.Context, req *tradeorder.ViewReq) (*tradeorder.ViewRes, error) { + v, err := service.SysTradeOrder().View(ctx, &req.TradeOrderViewInp) + return &tradeorder.ViewRes{TradeOrderViewModel: v}, err +} +func (c *cTradeOrder) MatchProducts(ctx context.Context, req *tradeorder.MatchProductsReq) (res *tradeorder.MatchProductsRes, err error) { + list, total, err := service.SysTradeOrder().MatchProducts(ctx, &req.TradeOrderMatchProductListInp) + if err != nil { + return nil, err + } + if list == nil { + list = []*sysin.TradeOrderMatchProductModel{} + } + res = new(tradeorder.MatchProductsRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cTradeOrder) Match(ctx context.Context, req *tradeorder.MatchReq) (*tradeorder.MatchRes, error) { + return &tradeorder.MatchRes{}, service.SysTradeOrder().Match(ctx, &req.TradeOrderMatchInp) +} +func (c *cTradeOrder) Apply(ctx context.Context, req *tradeorder.ApplyReq) (*tradeorder.ApplyRes, error) { + v, err := service.SysTradeOrder().Apply(ctx, &req.TradeOrderApplyInp) + return &tradeorder.ApplyRes{FinanceApprovalModel: v}, err +} +func (c *cTradeOrder) Execute(ctx context.Context, req *tradeorder.ExecuteReq) (*tradeorder.ExecuteRes, error) { + return &tradeorder.ExecuteRes{}, service.SysTradeOrder().Execute(ctx, &req.TradeOrderExecuteInp) +} diff --git a/server/internal/controller/admin/sys/withdrawal_order.go b/server/internal/controller/admin/sys/withdrawal_order.go new file mode 100644 index 0000000..0cf6ec1 --- /dev/null +++ b/server/internal/controller/admin/sys/withdrawal_order.go @@ -0,0 +1,41 @@ +package sys + +import ( + "context" + + "hotgo/api/admin/withdrawalorder" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var WithdrawalOrder = cWithdrawalOrder{} + +type cWithdrawalOrder struct{} + +func (c *cWithdrawalOrder) List(ctx context.Context, req *withdrawalorder.ListReq) (res *withdrawalorder.ListRes, err error) { + list, total, err := service.SysWithdrawalOrder().List(ctx, &req.WithdrawalOrderListInp) + if err != nil { + return nil, err + } + if list == nil { + list = []*sysin.WithdrawalOrderListModel{} + } + res = new(withdrawalorder.ListRes) + res.List = list + res.PageRes.Pack(req, total) + return +} +func (c *cWithdrawalOrder) View(ctx context.Context, req *withdrawalorder.ViewReq) (*withdrawalorder.ViewRes, error) { + v, err := service.SysWithdrawalOrder().View(ctx, &req.WithdrawalOrderViewInp) + return &withdrawalorder.ViewRes{WithdrawalOrderListModel: v}, err +} +func (c *cWithdrawalOrder) Review(ctx context.Context, req *withdrawalorder.ReviewReq) (*withdrawalorder.ReviewRes, error) { + v, err := service.SysWithdrawalOrder().Review(ctx, &req.WithdrawalReviewInp) + return &withdrawalorder.ReviewRes{FinanceApprovalModel: v}, err +} +func (c *cWithdrawalOrder) Execute(ctx context.Context, req *withdrawalorder.ExecuteReq) (*withdrawalorder.ExecuteRes, error) { + return &withdrawalorder.ExecuteRes{}, service.SysWithdrawalOrder().Execute(ctx, &req.FinanceExecuteInp) +} +func (c *cWithdrawalOrder) Complete(ctx context.Context, req *withdrawalorder.CompleteReq) (*withdrawalorder.CompleteRes, error) { + return &withdrawalorder.CompleteRes{}, service.SysWithdrawalOrder().Complete(ctx, &req.WithdrawalCompleteInp) +} 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/app_member.go b/server/internal/dao/app_member.go new file mode 100644 index 0000000..097db43 --- /dev/null +++ b/server/internal/dao/app_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" +) + +// appMemberDao is the data access object for the table hg_app_member. +// You can define custom methods on it to extend its functionality as needed. +type appMemberDao struct { + *internal.AppMemberDao +} + +var ( + // AppMember is a globally accessible object for table hg_app_member operations. + AppMember = appMemberDao{internal.NewAppMemberDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/app_member_address.go b/server/internal/dao/app_member_address.go new file mode 100644 index 0000000..6cb21de --- /dev/null +++ b/server/internal/dao/app_member_address.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" +) + +// appMemberAddressDao is the data access object for the table hg_app_member_address. +// You can define custom methods on it to extend its functionality as needed. +type appMemberAddressDao struct { + *internal.AppMemberAddressDao +} + +var ( + // AppMemberAddress is a globally accessible object for table hg_app_member_address operations. + AppMemberAddress = appMemberAddressDao{internal.NewAppMemberAddressDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/app_member_level.go b/server/internal/dao/app_member_level.go new file mode 100644 index 0000000..59bcd04 --- /dev/null +++ b/server/internal/dao/app_member_level.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" +) + +// appMemberLevelDao is the data access object for the table hg_app_member_level. +// You can define custom methods on it to extend its functionality as needed. +type appMemberLevelDao struct { + *internal.AppMemberLevelDao +} + +var ( + // AppMemberLevel is a globally accessible object for table hg_app_member_level operations. + AppMemberLevel = appMemberLevelDao{internal.NewAppMemberLevelDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/app_member_level_version.go b/server/internal/dao/app_member_level_version.go new file mode 100644 index 0000000..947e10e --- /dev/null +++ b/server/internal/dao/app_member_level_version.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" +) + +// appMemberLevelVersionDao is the data access object for the table hg_app_member_level_version. +// You can define custom methods on it to extend its functionality as needed. +type appMemberLevelVersionDao struct { + *internal.AppMemberLevelVersionDao +} + +var ( + // AppMemberLevelVersion is a globally accessible object for table hg_app_member_level_version operations. + AppMemberLevelVersion = appMemberLevelVersionDao{internal.NewAppMemberLevelVersionDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/app_member_notice.go b/server/internal/dao/app_member_notice.go new file mode 100644 index 0000000..731dda9 --- /dev/null +++ b/server/internal/dao/app_member_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" +) + +// appMemberNoticeDao is the data access object for the table hg_app_member_notice. +// You can define custom methods on it to extend its functionality as needed. +type appMemberNoticeDao struct { + *internal.AppMemberNoticeDao +} + +var ( + // AppMemberNotice is a globally accessible object for table hg_app_member_notice operations. + AppMemberNotice = appMemberNoticeDao{internal.NewAppMemberNoticeDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/app_member_payment_account.go b/server/internal/dao/app_member_payment_account.go new file mode 100644 index 0000000..e294a3b --- /dev/null +++ b/server/internal/dao/app_member_payment_account.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" +) + +// appMemberPaymentAccountDao is the data access object for the table hg_app_member_payment_account. +// You can define custom methods on it to extend its functionality as needed. +type appMemberPaymentAccountDao struct { + *internal.AppMemberPaymentAccountDao +} + +var ( + // AppMemberPaymentAccount is a globally accessible object for table hg_app_member_payment_account operations. + AppMemberPaymentAccount = appMemberPaymentAccountDao{internal.NewAppMemberPaymentAccountDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/app_member_profile.go b/server/internal/dao/app_member_profile.go new file mode 100644 index 0000000..e641453 --- /dev/null +++ b/server/internal/dao/app_member_profile.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" +) + +// appMemberProfileDao is the data access object for the table hg_app_member_profile. +// You can define custom methods on it to extend its functionality as needed. +type appMemberProfileDao struct { + *internal.AppMemberProfileDao +} + +var ( + // AppMemberProfile is a globally accessible object for table hg_app_member_profile operations. + AppMemberProfile = appMemberProfileDao{internal.NewAppMemberProfileDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/app_member_status_log.go b/server/internal/dao/app_member_status_log.go new file mode 100644 index 0000000..25d7854 --- /dev/null +++ b/server/internal/dao/app_member_status_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" +) + +// appMemberStatusLogDao is the data access object for the table hg_app_member_status_log. +// You can define custom methods on it to extend its functionality as needed. +type appMemberStatusLogDao struct { + *internal.AppMemberStatusLogDao +} + +var ( + // AppMemberStatusLog is a globally accessible object for table hg_app_member_status_log operations. + AppMemberStatusLog = appMemberStatusLogDao{internal.NewAppMemberStatusLogDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/approval_action.go b/server/internal/dao/approval_action.go new file mode 100644 index 0000000..e0e0c42 --- /dev/null +++ b/server/internal/dao/approval_action.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" +) + +// approvalActionDao is the data access object for the table hg_approval_action. +// You can define custom methods on it to extend its functionality as needed. +type approvalActionDao struct { + *internal.ApprovalActionDao +} + +var ( + // ApprovalAction is a globally accessible object for table hg_approval_action operations. + ApprovalAction = approvalActionDao{internal.NewApprovalActionDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/approval_request.go b/server/internal/dao/approval_request.go new file mode 100644 index 0000000..007ce73 --- /dev/null +++ b/server/internal/dao/approval_request.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" +) + +// approvalRequestDao is the data access object for the table hg_approval_request. +// You can define custom methods on it to extend its functionality as needed. +type approvalRequestDao struct { + *internal.ApprovalRequestDao +} + +var ( + // ApprovalRequest is a globally accessible object for table hg_approval_request operations. + ApprovalRequest = approvalRequestDao{internal.NewApprovalRequestDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/banner.go b/server/internal/dao/banner.go new file mode 100644 index 0000000..7dee7cc --- /dev/null +++ b/server/internal/dao/banner.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" +) + +// bannerDao is the data access object for the table hg_banner. +// You can define custom methods on it to extend its functionality as needed. +type bannerDao struct { + *internal.BannerDao +} + +var ( + // Banner is a globally accessible object for table hg_banner operations. + Banner = bannerDao{internal.NewBannerDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/biz_audit_log.go b/server/internal/dao/biz_audit_log.go new file mode 100644 index 0000000..cf33461 --- /dev/null +++ b/server/internal/dao/biz_audit_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" +) + +// bizAuditLogDao is the data access object for the table hg_biz_audit_log. +// You can define custom methods on it to extend its functionality as needed. +type bizAuditLogDao struct { + *internal.BizAuditLogDao +} + +var ( + // BizAuditLog is a globally accessible object for table hg_biz_audit_log operations. + BizAuditLog = bizAuditLogDao{internal.NewBizAuditLogDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/content.go b/server/internal/dao/content.go new file mode 100644 index 0000000..c619866 --- /dev/null +++ b/server/internal/dao/content.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" +) + +// contentDao is the data access object for the table hg_content. +// You can define custom methods on it to extend its functionality as needed. +type contentDao struct { + *internal.ContentDao +} + +var ( + // Content is a globally accessible object for table hg_content operations. + Content = contentDao{internal.NewContentDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/content_version.go b/server/internal/dao/content_version.go new file mode 100644 index 0000000..0a95d87 --- /dev/null +++ b/server/internal/dao/content_version.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" +) + +// contentVersionDao is the data access object for the table hg_content_version. +// You can define custom methods on it to extend its functionality as needed. +type contentVersionDao struct { + *internal.ContentVersionDao +} + +var ( + // ContentVersion is a globally accessible object for table hg_content_version operations. + ContentVersion = contentVersionDao{internal.NewContentVersionDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/customer_service.go b/server/internal/dao/customer_service.go new file mode 100644 index 0000000..f016e2c --- /dev/null +++ b/server/internal/dao/customer_service.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" +) + +// customerServiceDao is the data access object for the table hg_customer_service. +// You can define custom methods on it to extend its functionality as needed. +type customerServiceDao struct { + *internal.CustomerServiceDao +} + +var ( + // CustomerService is a globally accessible object for table hg_customer_service operations. + CustomerService = customerServiceDao{internal.NewCustomerServiceDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/dashboard_daily_stat.go b/server/internal/dao/dashboard_daily_stat.go new file mode 100644 index 0000000..2850475 --- /dev/null +++ b/server/internal/dao/dashboard_daily_stat.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" +) + +// dashboardDailyStatDao is the data access object for the table hg_dashboard_daily_stat. +// You can define custom methods on it to extend its functionality as needed. +type dashboardDailyStatDao struct { + *internal.DashboardDailyStatDao +} + +var ( + // DashboardDailyStat is a globally accessible object for table hg_dashboard_daily_stat operations. + DashboardDailyStat = dashboardDailyStatDao{internal.NewDashboardDailyStatDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/finance_review.go b/server/internal/dao/finance_review.go new file mode 100644 index 0000000..a4b70c6 --- /dev/null +++ b/server/internal/dao/finance_review.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" +) + +// financeReviewDao is the data access object for the table hg_finance_review. +// You can define custom methods on it to extend its functionality as needed. +type financeReviewDao struct { + *internal.FinanceReviewDao +} + +var ( + // FinanceReview is a globally accessible object for table hg_finance_review operations. + FinanceReview = financeReviewDao{internal.NewFinanceReviewDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/idempotency_record.go b/server/internal/dao/idempotency_record.go new file mode 100644 index 0000000..56dbe87 --- /dev/null +++ b/server/internal/dao/idempotency_record.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" +) + +// idempotencyRecordDao is the data access object for the table hg_idempotency_record. +// You can define custom methods on it to extend its functionality as needed. +type idempotencyRecordDao struct { + *internal.IdempotencyRecordDao +} + +var ( + // IdempotencyRecord is a globally accessible object for table hg_idempotency_record operations. + IdempotencyRecord = idempotencyRecordDao{internal.NewIdempotencyRecordDao()} +) + +// 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/app_member.go b/server/internal/dao/internal/app_member.go new file mode 100644 index 0000000..abe7214 --- /dev/null +++ b/server/internal/dao/internal/app_member.go @@ -0,0 +1,135 @@ +// ========================================================================== +// 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" +) + +// AppMemberDao is the data access object for the table hg_app_member. +type AppMemberDao 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 AppMemberColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AppMemberColumns defines and stores column names for the table hg_app_member. +type AppMemberColumns struct { + Id string // 主键 + TenantId string // 租户ID + MemberNo string // 会员编号 + Username string // 用户名 + MobileCipher string // 手机号密文(AES-GCM) + MobileHash string // 手机号检索哈希(HMAC-SHA256) + MobileMask string // 手机号脱敏值 + PasswordHash string // 登录密码哈希(bcrypt) + TradePasswordHash string // 交易密码哈希 + LevelId string // 会员等级ID + ParentId string // 上级会员ID + Level string // 团队层级 + Tree string // 关系树 + InviteCode string // 邀请码 + MemberStatus string // 会员状态 + RiskStatus string // 风控状态 + AutoDispatch string // 自动派单 + CreditScore string // 信用分 + IsTestAccount string // 测试账号 + LastLoginAt string // 最后登录时间 + LastLoginIpCipher string // 最后登录IP密文 + LastLoginIpMask string // 最后登录IP脱敏值 + LastLoginRegion string // 最后登录地区 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + DeletedBy string // 删除者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 + DeletedAt string // 注销时间 +} + +// appMemberColumns holds the columns for the table hg_app_member. +var appMemberColumns = AppMemberColumns{ + Id: "id", + TenantId: "tenant_id", + MemberNo: "member_no", + Username: "username", + MobileCipher: "mobile_cipher", + MobileHash: "mobile_hash", + MobileMask: "mobile_mask", + PasswordHash: "password_hash", + TradePasswordHash: "trade_password_hash", + LevelId: "level_id", + ParentId: "parent_id", + Level: "level", + Tree: "tree", + InviteCode: "invite_code", + MemberStatus: "member_status", + RiskStatus: "risk_status", + AutoDispatch: "auto_dispatch", + CreditScore: "credit_score", + IsTestAccount: "is_test_account", + LastLoginAt: "last_login_at", + LastLoginIpCipher: "last_login_ip_cipher", + LastLoginIpMask: "last_login_ip_mask", + LastLoginRegion: "last_login_region", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + DeletedBy: "deleted_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewAppMemberDao creates and returns a new DAO object for table data access. +func NewAppMemberDao(handlers ...gdb.ModelHandler) *AppMemberDao { + return &AppMemberDao{ + group: "default", + table: "hg_app_member", + columns: appMemberColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AppMemberDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AppMemberDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AppMemberDao) Columns() AppMemberColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AppMemberDao) 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 *AppMemberDao) 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 *AppMemberDao) 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/app_member_address.go b/server/internal/dao/internal/app_member_address.go new file mode 100644 index 0000000..e13c2f9 --- /dev/null +++ b/server/internal/dao/internal/app_member_address.go @@ -0,0 +1,115 @@ +// ========================================================================== +// 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" +) + +// AppMemberAddressDao is the data access object for the table hg_app_member_address. +type AppMemberAddressDao 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 AppMemberAddressColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AppMemberAddressColumns defines and stores column names for the table hg_app_member_address. +type AppMemberAddressColumns struct { + Id string // 主键 + TenantId string // 租户ID + MemberId string // 会员ID + ReceiverCipher string // 收货人密文 + ReceiverMask string // 收货人脱敏值 + MobileCipher string // 手机号密文 + MobileMask string // 手机号脱敏值 + Province string // 省 + City string // 市 + District string // 区县 + AddressCipher string // 详细地址密文 + AddressMask string // 详细地址脱敏值 + IsDefault string // 默认地址 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + DeletedBy string // 删除者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 + DeletedAt string // 删除时间 +} + +// appMemberAddressColumns holds the columns for the table hg_app_member_address. +var appMemberAddressColumns = AppMemberAddressColumns{ + Id: "id", + TenantId: "tenant_id", + MemberId: "member_id", + ReceiverCipher: "receiver_cipher", + ReceiverMask: "receiver_mask", + MobileCipher: "mobile_cipher", + MobileMask: "mobile_mask", + Province: "province", + City: "city", + District: "district", + AddressCipher: "address_cipher", + AddressMask: "address_mask", + IsDefault: "is_default", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + DeletedBy: "deleted_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewAppMemberAddressDao creates and returns a new DAO object for table data access. +func NewAppMemberAddressDao(handlers ...gdb.ModelHandler) *AppMemberAddressDao { + return &AppMemberAddressDao{ + group: "default", + table: "hg_app_member_address", + columns: appMemberAddressColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AppMemberAddressDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AppMemberAddressDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AppMemberAddressDao) Columns() AppMemberAddressColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AppMemberAddressDao) 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 *AppMemberAddressDao) 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 *AppMemberAddressDao) 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/app_member_level.go b/server/internal/dao/internal/app_member_level.go new file mode 100644 index 0000000..501cff0 --- /dev/null +++ b/server/internal/dao/internal/app_member_level.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" +) + +// AppMemberLevelDao is the data access object for the table hg_app_member_level. +type AppMemberLevelDao 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 AppMemberLevelColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AppMemberLevelColumns defines and stores column names for the table hg_app_member_level. +type AppMemberLevelColumns struct { + Id string // 主键 + TenantId string // 租户ID + LevelCode string // 稳定等级编码 + Name string // 等级名称 + IconAttachmentId string // 图标附件ID + IconUrl string // 图标URL + CurrentVersionId string // 当前发布版本ID + MemberCount string // 会员数(可重建) + Status string // 状态 1正常 2停用 + Sort string // 排序 + Remark string // 备注 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + DeletedBy string // 删除者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 + DeletedAt string // 删除时间 +} + +// appMemberLevelColumns holds the columns for the table hg_app_member_level. +var appMemberLevelColumns = AppMemberLevelColumns{ + Id: "id", + TenantId: "tenant_id", + LevelCode: "level_code", + Name: "name", + IconAttachmentId: "icon_attachment_id", + IconUrl: "icon_url", + CurrentVersionId: "current_version_id", + MemberCount: "member_count", + Status: "status", + Sort: "sort", + Remark: "remark", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + DeletedBy: "deleted_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewAppMemberLevelDao creates and returns a new DAO object for table data access. +func NewAppMemberLevelDao(handlers ...gdb.ModelHandler) *AppMemberLevelDao { + return &AppMemberLevelDao{ + group: "default", + table: "hg_app_member_level", + columns: appMemberLevelColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AppMemberLevelDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AppMemberLevelDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AppMemberLevelDao) Columns() AppMemberLevelColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AppMemberLevelDao) 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 *AppMemberLevelDao) 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 *AppMemberLevelDao) 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/app_member_level_version.go b/server/internal/dao/internal/app_member_level_version.go new file mode 100644 index 0000000..02932dc --- /dev/null +++ b/server/internal/dao/internal/app_member_level_version.go @@ -0,0 +1,119 @@ +// ========================================================================== +// 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" +) + +// AppMemberLevelVersionDao is the data access object for the table hg_app_member_level_version. +type AppMemberLevelVersionDao 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 AppMemberLevelVersionColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AppMemberLevelVersionColumns defines and stores column names for the table hg_app_member_level_version. +type AppMemberLevelVersionColumns struct { + Id string // 主键 + TenantId string // 租户ID + LevelId string // 等级ID + VersionNo string // 版本号 + UpgradeAmount string // 升级金额(分) + GiftAmount string // 赠送金额(分) + DailyOrderLimit string // 每日接单次数 + CommissionRate string // 佣金万分比 + DailyWithdrawLimit string // 每日提现次数 + RuleJson string // 扩展规则快照 + PublishStatus string // 发布状态 + EffectiveAt string // 计划生效时间 + PublishedAt string // 发布时间 + ApprovalRequestId string // 审批单ID + BaseVersionId string // 基础版本ID + Version string // 乐观锁 + Remark string // 变更说明 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// appMemberLevelVersionColumns holds the columns for the table hg_app_member_level_version. +var appMemberLevelVersionColumns = AppMemberLevelVersionColumns{ + Id: "id", + TenantId: "tenant_id", + LevelId: "level_id", + VersionNo: "version_no", + UpgradeAmount: "upgrade_amount", + GiftAmount: "gift_amount", + DailyOrderLimit: "daily_order_limit", + CommissionRate: "commission_rate", + DailyWithdrawLimit: "daily_withdraw_limit", + RuleJson: "rule_json", + PublishStatus: "publish_status", + EffectiveAt: "effective_at", + PublishedAt: "published_at", + ApprovalRequestId: "approval_request_id", + BaseVersionId: "base_version_id", + Version: "version", + Remark: "remark", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewAppMemberLevelVersionDao creates and returns a new DAO object for table data access. +func NewAppMemberLevelVersionDao(handlers ...gdb.ModelHandler) *AppMemberLevelVersionDao { + return &AppMemberLevelVersionDao{ + group: "default", + table: "hg_app_member_level_version", + columns: appMemberLevelVersionColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AppMemberLevelVersionDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AppMemberLevelVersionDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AppMemberLevelVersionDao) Columns() AppMemberLevelVersionColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AppMemberLevelVersionDao) 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 *AppMemberLevelVersionDao) 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 *AppMemberLevelVersionDao) 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/app_member_notice.go b/server/internal/dao/internal/app_member_notice.go new file mode 100644 index 0000000..189b660 --- /dev/null +++ b/server/internal/dao/internal/app_member_notice.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" +) + +// AppMemberNoticeDao is the data access object for the table hg_app_member_notice. +type AppMemberNoticeDao 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 AppMemberNoticeColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AppMemberNoticeColumns defines and stores column names for the table hg_app_member_notice. +type AppMemberNoticeColumns struct { + Id string // 主键 + TenantId string // 租户ID + MemberId string // 会员ID,0为全体 + Title string // 标题 + Content string // 内容 + SourceType string // 来源 1真实通知 2运营模拟 + StartAt string // 开始时间 + EndAt string // 结束时间 + NoticeStatus string // 状态 1有效 2撤回 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// appMemberNoticeColumns holds the columns for the table hg_app_member_notice. +var appMemberNoticeColumns = AppMemberNoticeColumns{ + Id: "id", + TenantId: "tenant_id", + MemberId: "member_id", + Title: "title", + Content: "content", + SourceType: "source_type", + StartAt: "start_at", + EndAt: "end_at", + NoticeStatus: "notice_status", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewAppMemberNoticeDao creates and returns a new DAO object for table data access. +func NewAppMemberNoticeDao(handlers ...gdb.ModelHandler) *AppMemberNoticeDao { + return &AppMemberNoticeDao{ + group: "default", + table: "hg_app_member_notice", + columns: appMemberNoticeColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AppMemberNoticeDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AppMemberNoticeDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AppMemberNoticeDao) Columns() AppMemberNoticeColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AppMemberNoticeDao) 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 *AppMemberNoticeDao) 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 *AppMemberNoticeDao) 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/app_member_payment_account.go b/server/internal/dao/internal/app_member_payment_account.go new file mode 100644 index 0000000..6f3f3ac --- /dev/null +++ b/server/internal/dao/internal/app_member_payment_account.go @@ -0,0 +1,121 @@ +// ========================================================================== +// 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" +) + +// AppMemberPaymentAccountDao is the data access object for the table hg_app_member_payment_account. +type AppMemberPaymentAccountDao 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 AppMemberPaymentAccountColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AppMemberPaymentAccountColumns defines and stores column names for the table hg_app_member_payment_account. +type AppMemberPaymentAccountColumns struct { + Id string // 主键 + TenantId string // 租户ID + MemberId string // 会员ID + AccountType string // 账户类型 + BankCode string // 银行编码 + BankName string // 银行名称 + HolderCipher string // 持有人密文 + HolderMask string // 持有人脱敏值 + MobileCipher string // 预留手机号密文 + MobileMask string // 预留手机号脱敏值 + AccountNoCipher string // 账号密文 + AccountNoHash string // 账号检索哈希 + AccountNoMask string // 账号脱敏值 + QrAttachmentId string // 收款码附件ID + VerifyStatus string // 核验状态 + IsDefault string // 默认账户 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + DeletedBy string // 删除者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 + DeletedAt string // 删除时间 +} + +// appMemberPaymentAccountColumns holds the columns for the table hg_app_member_payment_account. +var appMemberPaymentAccountColumns = AppMemberPaymentAccountColumns{ + Id: "id", + TenantId: "tenant_id", + MemberId: "member_id", + AccountType: "account_type", + BankCode: "bank_code", + BankName: "bank_name", + HolderCipher: "holder_cipher", + HolderMask: "holder_mask", + MobileCipher: "mobile_cipher", + MobileMask: "mobile_mask", + AccountNoCipher: "account_no_cipher", + AccountNoHash: "account_no_hash", + AccountNoMask: "account_no_mask", + QrAttachmentId: "qr_attachment_id", + VerifyStatus: "verify_status", + IsDefault: "is_default", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + DeletedBy: "deleted_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewAppMemberPaymentAccountDao creates and returns a new DAO object for table data access. +func NewAppMemberPaymentAccountDao(handlers ...gdb.ModelHandler) *AppMemberPaymentAccountDao { + return &AppMemberPaymentAccountDao{ + group: "default", + table: "hg_app_member_payment_account", + columns: appMemberPaymentAccountColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AppMemberPaymentAccountDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AppMemberPaymentAccountDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AppMemberPaymentAccountDao) Columns() AppMemberPaymentAccountColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AppMemberPaymentAccountDao) 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 *AppMemberPaymentAccountDao) 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 *AppMemberPaymentAccountDao) 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/app_member_profile.go b/server/internal/dao/internal/app_member_profile.go new file mode 100644 index 0000000..af5d6c5 --- /dev/null +++ b/server/internal/dao/internal/app_member_profile.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" +) + +// AppMemberProfileDao is the data access object for the table hg_app_member_profile. +type AppMemberProfileDao 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 AppMemberProfileColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AppMemberProfileColumns defines and stores column names for the table hg_app_member_profile. +type AppMemberProfileColumns struct { + Id string // 主键 + TenantId string // 租户ID + MemberId string // 会员ID + RealNameCipher string // 真实姓名密文 + RealNameMask string // 真实姓名脱敏值 + IdNoCipher string // 证件号密文 + IdNoHash string // 证件号检索哈希 + IdNoMask string // 证件号脱敏值 + AvatarAttachmentId string // 头像附件ID + KycStatus string // 实名状态 + KycVerifiedAt string // 实名时间 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// appMemberProfileColumns holds the columns for the table hg_app_member_profile. +var appMemberProfileColumns = AppMemberProfileColumns{ + Id: "id", + TenantId: "tenant_id", + MemberId: "member_id", + RealNameCipher: "real_name_cipher", + RealNameMask: "real_name_mask", + IdNoCipher: "id_no_cipher", + IdNoHash: "id_no_hash", + IdNoMask: "id_no_mask", + AvatarAttachmentId: "avatar_attachment_id", + KycStatus: "kyc_status", + KycVerifiedAt: "kyc_verified_at", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewAppMemberProfileDao creates and returns a new DAO object for table data access. +func NewAppMemberProfileDao(handlers ...gdb.ModelHandler) *AppMemberProfileDao { + return &AppMemberProfileDao{ + group: "default", + table: "hg_app_member_profile", + columns: appMemberProfileColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AppMemberProfileDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AppMemberProfileDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AppMemberProfileDao) Columns() AppMemberProfileColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AppMemberProfileDao) 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 *AppMemberProfileDao) 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 *AppMemberProfileDao) 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/app_member_status_log.go b/server/internal/dao/internal/app_member_status_log.go new file mode 100644 index 0000000..e96182d --- /dev/null +++ b/server/internal/dao/internal/app_member_status_log.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" +) + +// AppMemberStatusLogDao is the data access object for the table hg_app_member_status_log. +type AppMemberStatusLogDao 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 AppMemberStatusLogColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AppMemberStatusLogColumns defines and stores column names for the table hg_app_member_status_log. +type AppMemberStatusLogColumns struct { + Id string // 主键 + TenantId string // 租户ID + MemberId string // 会员ID + FromStatus string // 原状态 + ToStatus string // 目标状态 + ReasonCode string // 原因编码 + ReasonText string // 原因说明 + EffectiveAt string // 生效时间 + ExpireAt string // 失效时间 + ApprovalRequestId string // 审批单ID + OperatorId string // 执行人 + CreatedAt string // 创建时间 +} + +// appMemberStatusLogColumns holds the columns for the table hg_app_member_status_log. +var appMemberStatusLogColumns = AppMemberStatusLogColumns{ + Id: "id", + TenantId: "tenant_id", + MemberId: "member_id", + FromStatus: "from_status", + ToStatus: "to_status", + ReasonCode: "reason_code", + ReasonText: "reason_text", + EffectiveAt: "effective_at", + ExpireAt: "expire_at", + ApprovalRequestId: "approval_request_id", + OperatorId: "operator_id", + CreatedAt: "created_at", +} + +// NewAppMemberStatusLogDao creates and returns a new DAO object for table data access. +func NewAppMemberStatusLogDao(handlers ...gdb.ModelHandler) *AppMemberStatusLogDao { + return &AppMemberStatusLogDao{ + group: "default", + table: "hg_app_member_status_log", + columns: appMemberStatusLogColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AppMemberStatusLogDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AppMemberStatusLogDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AppMemberStatusLogDao) Columns() AppMemberStatusLogColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AppMemberStatusLogDao) 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 *AppMemberStatusLogDao) 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 *AppMemberStatusLogDao) 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/approval_action.go b/server/internal/dao/internal/approval_action.go new file mode 100644 index 0000000..d1c1353 --- /dev/null +++ b/server/internal/dao/internal/approval_action.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" +) + +// ApprovalActionDao is the data access object for the table hg_approval_action. +type ApprovalActionDao 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 ApprovalActionColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// ApprovalActionColumns defines and stores column names for the table hg_approval_action. +type ApprovalActionColumns struct { + Id string // 主键 + TenantId string // 租户ID + ApprovalRequestId string // 审批请求ID + StepNo string // 节点顺序 + ActorId string // 操作人 + Action string // 审批动作 + ReasonCode string // 原因编码 + Comment string // 审批意见 + SnapshotJson string // 操作时快照 + ActorIpCipher string // 操作IP密文 + MfaVerified string // 是否二次认证 + CreatedAt string // 创建时间 +} + +// approvalActionColumns holds the columns for the table hg_approval_action. +var approvalActionColumns = ApprovalActionColumns{ + Id: "id", + TenantId: "tenant_id", + ApprovalRequestId: "approval_request_id", + StepNo: "step_no", + ActorId: "actor_id", + Action: "action", + ReasonCode: "reason_code", + Comment: "comment", + SnapshotJson: "snapshot_json", + ActorIpCipher: "actor_ip_cipher", + MfaVerified: "mfa_verified", + CreatedAt: "created_at", +} + +// NewApprovalActionDao creates and returns a new DAO object for table data access. +func NewApprovalActionDao(handlers ...gdb.ModelHandler) *ApprovalActionDao { + return &ApprovalActionDao{ + group: "default", + table: "hg_approval_action", + columns: approvalActionColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *ApprovalActionDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *ApprovalActionDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *ApprovalActionDao) Columns() ApprovalActionColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *ApprovalActionDao) 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 *ApprovalActionDao) 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 *ApprovalActionDao) 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/approval_request.go b/server/internal/dao/internal/approval_request.go new file mode 100644 index 0000000..c0aed92 --- /dev/null +++ b/server/internal/dao/internal/approval_request.go @@ -0,0 +1,125 @@ +// ========================================================================== +// 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" +) + +// ApprovalRequestDao is the data access object for the table hg_approval_request. +type ApprovalRequestDao 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 ApprovalRequestColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// ApprovalRequestColumns defines and stores column names for the table hg_approval_request. +type ApprovalRequestColumns struct { + Id string // 主键 + TenantId string // 租户ID + ApprovalNo string // 审批单号 + ApprovalType string // 审批类型 + TargetType string // 目标类型 + TargetId string // 目标ID + Action string // 拟执行动作 + Title string // 审批标题 + PayloadJson string // 待执行数据快照 + DiffJson string // 前后差异 + RiskLevel string // 风险级别 + RequiredApprovals string // 需要通过数 + ApprovalStatus string // 审批状态 + ApplicantId string // 申请人 + SubmittedAt string // 提交时间 + DecidedAt string // 决定时间 + ExecutedAt string // 执行时间 + ExpireAt string // 超时时间 + Version string // 乐观锁 + Remark string // 备注 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// approvalRequestColumns holds the columns for the table hg_approval_request. +var approvalRequestColumns = ApprovalRequestColumns{ + Id: "id", + TenantId: "tenant_id", + ApprovalNo: "approval_no", + ApprovalType: "approval_type", + TargetType: "target_type", + TargetId: "target_id", + Action: "action", + Title: "title", + PayloadJson: "payload_json", + DiffJson: "diff_json", + RiskLevel: "risk_level", + RequiredApprovals: "required_approvals", + ApprovalStatus: "approval_status", + ApplicantId: "applicant_id", + SubmittedAt: "submitted_at", + DecidedAt: "decided_at", + ExecutedAt: "executed_at", + ExpireAt: "expire_at", + Version: "version", + Remark: "remark", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewApprovalRequestDao creates and returns a new DAO object for table data access. +func NewApprovalRequestDao(handlers ...gdb.ModelHandler) *ApprovalRequestDao { + return &ApprovalRequestDao{ + group: "default", + table: "hg_approval_request", + columns: approvalRequestColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *ApprovalRequestDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *ApprovalRequestDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *ApprovalRequestDao) Columns() ApprovalRequestColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *ApprovalRequestDao) 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 *ApprovalRequestDao) 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 *ApprovalRequestDao) 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/banner.go b/server/internal/dao/internal/banner.go new file mode 100644 index 0000000..d6abe64 --- /dev/null +++ b/server/internal/dao/internal/banner.go @@ -0,0 +1,119 @@ +// ========================================================================== +// 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" +) + +// BannerDao is the data access object for the table hg_banner. +type BannerDao 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 BannerColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// BannerColumns defines and stores column names for the table hg_banner. +type BannerColumns struct { + Id string // 主键 + TenantId string // 租户ID + Name string // 后台名称 + Position string // 投放位置 + ImageAttachmentId string // 图片附件ID + ImageUrl string // 图片URL + AltText string // 替代文本 + TargetType string // 跳转类型 + TargetValue string // 跳转值 + StartAt string // 开始时间 + EndAt string // 结束时间 + PublishStatus string // 发布状态 + Sort string // 排序 + Version string // 乐观锁 + Remark string // 备注 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + DeletedBy string // 删除者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 + DeletedAt string // 删除时间 +} + +// bannerColumns holds the columns for the table hg_banner. +var bannerColumns = BannerColumns{ + Id: "id", + TenantId: "tenant_id", + Name: "name", + Position: "position", + ImageAttachmentId: "image_attachment_id", + ImageUrl: "image_url", + AltText: "alt_text", + TargetType: "target_type", + TargetValue: "target_value", + StartAt: "start_at", + EndAt: "end_at", + PublishStatus: "publish_status", + Sort: "sort", + Version: "version", + Remark: "remark", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + DeletedBy: "deleted_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewBannerDao creates and returns a new DAO object for table data access. +func NewBannerDao(handlers ...gdb.ModelHandler) *BannerDao { + return &BannerDao{ + group: "default", + table: "hg_banner", + columns: bannerColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *BannerDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *BannerDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *BannerDao) Columns() BannerColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *BannerDao) 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 *BannerDao) 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 *BannerDao) 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/biz_audit_log.go b/server/internal/dao/internal/biz_audit_log.go new file mode 100644 index 0000000..c5133e6 --- /dev/null +++ b/server/internal/dao/internal/biz_audit_log.go @@ -0,0 +1,113 @@ +// ========================================================================== +// 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" +) + +// BizAuditLogDao is the data access object for the table hg_biz_audit_log. +type BizAuditLogDao 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 BizAuditLogColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// BizAuditLogColumns defines and stores column names for the table hg_biz_audit_log. +type BizAuditLogColumns struct { + Id string // 主键 + TenantId string // 租户ID + AuditNo string // 审计号 + ActorType string // 操作人类型 + ActorId string // 操作人ID + Module string // 业务模块 + Action string // 操作动作 + TargetType string // 目标类型 + TargetId string // 目标ID + BeforeDigest string // 变更前摘要 + AfterDigest string // 变更后摘要 + ChangeJson string // 已脱敏差异 + Reason string // 操作原因 + ApprovalNo string // 审批单号 + TraceId string // 链路ID + PrevHash string // 前一条哈希 + RowHash string // 当前行哈希 + CreatedAt string // 创建时间 +} + +// bizAuditLogColumns holds the columns for the table hg_biz_audit_log. +var bizAuditLogColumns = BizAuditLogColumns{ + Id: "id", + TenantId: "tenant_id", + AuditNo: "audit_no", + ActorType: "actor_type", + ActorId: "actor_id", + Module: "module", + Action: "action", + TargetType: "target_type", + TargetId: "target_id", + BeforeDigest: "before_digest", + AfterDigest: "after_digest", + ChangeJson: "change_json", + Reason: "reason", + ApprovalNo: "approval_no", + TraceId: "trace_id", + PrevHash: "prev_hash", + RowHash: "row_hash", + CreatedAt: "created_at", +} + +// NewBizAuditLogDao creates and returns a new DAO object for table data access. +func NewBizAuditLogDao(handlers ...gdb.ModelHandler) *BizAuditLogDao { + return &BizAuditLogDao{ + group: "default", + table: "hg_biz_audit_log", + columns: bizAuditLogColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *BizAuditLogDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *BizAuditLogDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *BizAuditLogDao) Columns() BizAuditLogColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *BizAuditLogDao) 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 *BizAuditLogDao) 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 *BizAuditLogDao) 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/content.go b/server/internal/dao/internal/content.go new file mode 100644 index 0000000..aac7f11 --- /dev/null +++ b/server/internal/dao/internal/content.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" +) + +// ContentDao is the data access object for the table hg_content. +type ContentDao 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 ContentColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// ContentColumns defines and stores column names for the table hg_content. +type ContentColumns struct { + Id string // 主键 + TenantId string // 租户ID + ContentKey string // 稳定内容标识 + ContentType string // 内容类型 + Title string // 后台标题 + PublishedVersionId string // 当前发布版本ID + PublishStatus string // 发布状态 + PublishedAt string // 发布时间 + Sort string // 排序 + Version string // 乐观锁 + Remark string // 备注 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + DeletedBy string // 删除者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 + DeletedAt string // 删除时间 +} + +// contentColumns holds the columns for the table hg_content. +var contentColumns = ContentColumns{ + Id: "id", + TenantId: "tenant_id", + ContentKey: "content_key", + ContentType: "content_type", + Title: "title", + PublishedVersionId: "published_version_id", + PublishStatus: "publish_status", + PublishedAt: "published_at", + Sort: "sort", + Version: "version", + Remark: "remark", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + DeletedBy: "deleted_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewContentDao creates and returns a new DAO object for table data access. +func NewContentDao(handlers ...gdb.ModelHandler) *ContentDao { + return &ContentDao{ + group: "default", + table: "hg_content", + columns: contentColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *ContentDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *ContentDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *ContentDao) Columns() ContentColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *ContentDao) 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 *ContentDao) 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 *ContentDao) 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/content_version.go b/server/internal/dao/internal/content_version.go new file mode 100644 index 0000000..3e6268b --- /dev/null +++ b/server/internal/dao/internal/content_version.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" +) + +// ContentVersionDao is the data access object for the table hg_content_version. +type ContentVersionDao 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 ContentVersionColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// ContentVersionColumns defines and stores column names for the table hg_content_version. +type ContentVersionColumns struct { + Id string // 主键 + TenantId string // 租户ID + ContentId string // 内容ID + VersionNo string // 版本号 + Title string // 展示标题 + Summary string // 摘要 + BodyHtml string // 清洗后HTML + BodyText string // 降级文本 + CoverUrl string // 封面图片URL + AssetIds string // 引用附件ID + PublishStatus string // 发布状态 + EffectiveAt string // 计划生效时间 + ApprovalRequestId string // 审批单ID + CreatedBy string // 创建者 + CreatedAt string // 创建时间 +} + +// contentVersionColumns holds the columns for the table hg_content_version. +var contentVersionColumns = ContentVersionColumns{ + Id: "id", + TenantId: "tenant_id", + ContentId: "content_id", + VersionNo: "version_no", + Title: "title", + Summary: "summary", + BodyHtml: "body_html", + BodyText: "body_text", + CoverUrl: "cover_url", + AssetIds: "asset_ids", + PublishStatus: "publish_status", + EffectiveAt: "effective_at", + ApprovalRequestId: "approval_request_id", + CreatedBy: "created_by", + CreatedAt: "created_at", +} + +// NewContentVersionDao creates and returns a new DAO object for table data access. +func NewContentVersionDao(handlers ...gdb.ModelHandler) *ContentVersionDao { + return &ContentVersionDao{ + group: "default", + table: "hg_content_version", + columns: contentVersionColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *ContentVersionDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *ContentVersionDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *ContentVersionDao) Columns() ContentVersionColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *ContentVersionDao) 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 *ContentVersionDao) 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 *ContentVersionDao) 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/customer_service.go b/server/internal/dao/internal/customer_service.go new file mode 100644 index 0000000..f9c4e48 --- /dev/null +++ b/server/internal/dao/internal/customer_service.go @@ -0,0 +1,115 @@ +// ========================================================================== +// 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" +) + +// CustomerServiceDao is the data access object for the table hg_customer_service. +type CustomerServiceDao 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 CustomerServiceColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// CustomerServiceColumns defines and stores column names for the table hg_customer_service. +type CustomerServiceColumns struct { + Id string // 主键 + TenantId string // 租户ID + ServiceCode string // 客服编码 + Name string // 客服名称 + AvatarUrl string // 头像地址 + WorkTime string // 工作时间说明 + OnlineStatus string // 在线状态 + ServiceUrl string // 客服跳转URL + BackupContact string // 备用联系方式 + SessionMapping string // 第三方会话映射 + Status string // 状态 + Sort string // 排序 + Remark string // 备注 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + DeletedBy string // 删除者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 + DeletedAt string // 删除时间 +} + +// customerServiceColumns holds the columns for the table hg_customer_service. +var customerServiceColumns = CustomerServiceColumns{ + Id: "id", + TenantId: "tenant_id", + ServiceCode: "service_code", + Name: "name", + AvatarUrl: "avatar_url", + WorkTime: "work_time", + OnlineStatus: "online_status", + ServiceUrl: "service_url", + BackupContact: "backup_contact", + SessionMapping: "session_mapping", + Status: "status", + Sort: "sort", + Remark: "remark", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + DeletedBy: "deleted_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewCustomerServiceDao creates and returns a new DAO object for table data access. +func NewCustomerServiceDao(handlers ...gdb.ModelHandler) *CustomerServiceDao { + return &CustomerServiceDao{ + group: "default", + table: "hg_customer_service", + columns: customerServiceColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *CustomerServiceDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *CustomerServiceDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *CustomerServiceDao) Columns() CustomerServiceColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *CustomerServiceDao) 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 *CustomerServiceDao) 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 *CustomerServiceDao) 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/dashboard_daily_stat.go b/server/internal/dao/internal/dashboard_daily_stat.go new file mode 100644 index 0000000..1b8766f --- /dev/null +++ b/server/internal/dao/internal/dashboard_daily_stat.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" +) + +// DashboardDailyStatDao is the data access object for the table hg_dashboard_daily_stat. +type DashboardDailyStatDao 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 DashboardDailyStatColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// DashboardDailyStatColumns defines and stores column names for the table hg_dashboard_daily_stat. +type DashboardDailyStatColumns struct { + Id string // 主键 + TenantId string // 租户ID + StatDate string // 统计日期 + DimensionType string // 维度类型 + DimensionValue string // 维度值 + MetricCode string // 指标编码 + MetricCount string // 指标数量 + MetricAmount string // 指标金额(最小货币单位) + CalculatedAt string // 计算时间 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// dashboardDailyStatColumns holds the columns for the table hg_dashboard_daily_stat. +var dashboardDailyStatColumns = DashboardDailyStatColumns{ + Id: "id", + TenantId: "tenant_id", + StatDate: "stat_date", + DimensionType: "dimension_type", + DimensionValue: "dimension_value", + MetricCode: "metric_code", + MetricCount: "metric_count", + MetricAmount: "metric_amount", + CalculatedAt: "calculated_at", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewDashboardDailyStatDao creates and returns a new DAO object for table data access. +func NewDashboardDailyStatDao(handlers ...gdb.ModelHandler) *DashboardDailyStatDao { + return &DashboardDailyStatDao{ + group: "default", + table: "hg_dashboard_daily_stat", + columns: dashboardDailyStatColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *DashboardDailyStatDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *DashboardDailyStatDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *DashboardDailyStatDao) Columns() DashboardDailyStatColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *DashboardDailyStatDao) 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 *DashboardDailyStatDao) 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 *DashboardDailyStatDao) 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/finance_review.go b/server/internal/dao/internal/finance_review.go new file mode 100644 index 0000000..0ba0399 --- /dev/null +++ b/server/internal/dao/internal/finance_review.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" +) + +// FinanceReviewDao is the data access object for the table hg_finance_review. +type FinanceReviewDao 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 FinanceReviewColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// FinanceReviewColumns defines and stores column names for the table hg_finance_review. +type FinanceReviewColumns struct { + Id string // 主键 + TenantId string // 租户ID + ApprovalRequestId string // 审批单ID + BizType string // 业务类型 + BizId string // 业务ID + ReviewStage string // 审核阶段 + ReviewerId string // 审核人 + Decision string // 审核结论 + ReasonCode string // 原因编码 + ReasonText string // 审核说明 + SnapshotJson string // 审核快照 + CreatedAt string // 创建时间 +} + +// financeReviewColumns holds the columns for the table hg_finance_review. +var financeReviewColumns = FinanceReviewColumns{ + Id: "id", + TenantId: "tenant_id", + ApprovalRequestId: "approval_request_id", + BizType: "biz_type", + BizId: "biz_id", + ReviewStage: "review_stage", + ReviewerId: "reviewer_id", + Decision: "decision", + ReasonCode: "reason_code", + ReasonText: "reason_text", + SnapshotJson: "snapshot_json", + CreatedAt: "created_at", +} + +// NewFinanceReviewDao creates and returns a new DAO object for table data access. +func NewFinanceReviewDao(handlers ...gdb.ModelHandler) *FinanceReviewDao { + return &FinanceReviewDao{ + group: "default", + table: "hg_finance_review", + columns: financeReviewColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *FinanceReviewDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *FinanceReviewDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *FinanceReviewDao) Columns() FinanceReviewColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *FinanceReviewDao) 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 *FinanceReviewDao) 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 *FinanceReviewDao) 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/idempotency_record.go b/server/internal/dao/internal/idempotency_record.go new file mode 100644 index 0000000..a5ae6ab --- /dev/null +++ b/server/internal/dao/internal/idempotency_record.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" +) + +// IdempotencyRecordDao is the data access object for the table hg_idempotency_record. +type IdempotencyRecordDao 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 IdempotencyRecordColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// IdempotencyRecordColumns defines and stores column names for the table hg_idempotency_record. +type IdempotencyRecordColumns struct { + Id string // 主键 + TenantId string // 租户ID + Scope string // 业务作用域 + IdempotencyKey string // 幂等键 + RequestDigest string // 请求摘要 + ResourceType string // 资源类型 + ResourceId string // 资源ID + ProcessStatus string // 处理状态 + ResponseCode string // 响应码 + ResponseDigest string // 响应摘要 + ExpireAt string // 过期时间 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// idempotencyRecordColumns holds the columns for the table hg_idempotency_record. +var idempotencyRecordColumns = IdempotencyRecordColumns{ + Id: "id", + TenantId: "tenant_id", + Scope: "scope", + IdempotencyKey: "idempotency_key", + RequestDigest: "request_digest", + ResourceType: "resource_type", + ResourceId: "resource_id", + ProcessStatus: "process_status", + ResponseCode: "response_code", + ResponseDigest: "response_digest", + ExpireAt: "expire_at", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewIdempotencyRecordDao creates and returns a new DAO object for table data access. +func NewIdempotencyRecordDao(handlers ...gdb.ModelHandler) *IdempotencyRecordDao { + return &IdempotencyRecordDao{ + group: "default", + table: "hg_idempotency_record", + columns: idempotencyRecordColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *IdempotencyRecordDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *IdempotencyRecordDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *IdempotencyRecordDao) Columns() IdempotencyRecordColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *IdempotencyRecordDao) 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 *IdempotencyRecordDao) 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 *IdempotencyRecordDao) 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/outbox_event.go b/server/internal/dao/internal/outbox_event.go new file mode 100644 index 0000000..3d5e347 --- /dev/null +++ b/server/internal/dao/internal/outbox_event.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" +) + +// OutboxEventDao is the data access object for the table hg_outbox_event. +type OutboxEventDao 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 OutboxEventColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// OutboxEventColumns defines and stores column names for the table hg_outbox_event. +type OutboxEventColumns struct { + Id string // 主键 + TenantId string // 租户ID + EventNo string // 事件号 + AggregateType string // 聚合根类型 + AggregateId string // 聚合根ID + EventType string // 事件类型 + PayloadJson string // 已脱敏事件数据 + PublishStatus string // 发送状态 + RetryCount string // 重试次数 + NextRetryAt string // 下次重试时间 + LastError string // 最后错误 + CreatedAt string // 创建时间 + PublishedAt string // 发送时间 +} + +// outboxEventColumns holds the columns for the table hg_outbox_event. +var outboxEventColumns = OutboxEventColumns{ + Id: "id", + TenantId: "tenant_id", + EventNo: "event_no", + AggregateType: "aggregate_type", + AggregateId: "aggregate_id", + EventType: "event_type", + PayloadJson: "payload_json", + PublishStatus: "publish_status", + RetryCount: "retry_count", + NextRetryAt: "next_retry_at", + LastError: "last_error", + CreatedAt: "created_at", + PublishedAt: "published_at", +} + +// NewOutboxEventDao creates and returns a new DAO object for table data access. +func NewOutboxEventDao(handlers ...gdb.ModelHandler) *OutboxEventDao { + return &OutboxEventDao{ + group: "default", + table: "hg_outbox_event", + columns: outboxEventColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *OutboxEventDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *OutboxEventDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *OutboxEventDao) Columns() OutboxEventColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *OutboxEventDao) 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 *OutboxEventDao) 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 *OutboxEventDao) 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/payment_channel.go b/server/internal/dao/internal/payment_channel.go new file mode 100644 index 0000000..78d87c4 --- /dev/null +++ b/server/internal/dao/internal/payment_channel.go @@ -0,0 +1,117 @@ +// ========================================================================== +// 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" +) + +// PaymentChannelDao is the data access object for the table hg_payment_channel. +type PaymentChannelDao 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 PaymentChannelColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// PaymentChannelColumns defines and stores column names for the table hg_payment_channel. +type PaymentChannelColumns struct { + Id string // 主键 + TenantId string // 租户ID + ChannelCode string // 渠道编码 + Name string // 渠道名称 + ChannelType string // 渠道类型 + Direction string // 支持方向 + ConfigCipher string // 渠道配置密文 + MinAmount string // 最小金额(分) + MaxAmount string // 最大金额(分) + FeeType string // 手续费类型 + FeeFixedAmount string // 固定手续费(分) + FeeRate string // 费率(万分比) + Status string // 状态 + Sort string // 排序 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + DeletedBy string // 删除者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 + DeletedAt string // 删除时间 +} + +// paymentChannelColumns holds the columns for the table hg_payment_channel. +var paymentChannelColumns = PaymentChannelColumns{ + Id: "id", + TenantId: "tenant_id", + ChannelCode: "channel_code", + Name: "name", + ChannelType: "channel_type", + Direction: "direction", + ConfigCipher: "config_cipher", + MinAmount: "min_amount", + MaxAmount: "max_amount", + FeeType: "fee_type", + FeeFixedAmount: "fee_fixed_amount", + FeeRate: "fee_rate", + Status: "status", + Sort: "sort", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + DeletedBy: "deleted_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewPaymentChannelDao creates and returns a new DAO object for table data access. +func NewPaymentChannelDao(handlers ...gdb.ModelHandler) *PaymentChannelDao { + return &PaymentChannelDao{ + group: "default", + table: "hg_payment_channel", + columns: paymentChannelColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *PaymentChannelDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *PaymentChannelDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *PaymentChannelDao) Columns() PaymentChannelColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *PaymentChannelDao) 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 *PaymentChannelDao) 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 *PaymentChannelDao) 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/product.go b/server/internal/dao/internal/product.go new file mode 100644 index 0000000..027b1b4 --- /dev/null +++ b/server/internal/dao/internal/product.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" +) + +// ProductDao is the data access object for the table hg_product. +type ProductDao 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 ProductColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// ProductColumns defines and stores column names for the table hg_product. +type ProductColumns struct { + Id string // 主键 + TenantId string // 租户ID + ProductNo string // 商品编号 + CategoryId string // 分类ID + ProductType string // 商品类型 + PaymentType string // 支付方式 + Name string // 商品名称 + ShopName string // 店铺名称 + PriceAmount string // 单价(分) + Currency string // 币种 + CoverAttachmentId string // 封面附件ID + CoverUrl string // 封面URL + DetailHtml string // 商品详情 + IsRecommended string // 是否推荐 + PublishStatus string // 发布状态 + StartAt string // 展示开始时间 + EndAt string // 展示结束时间 + Sort string // 排序 + Version string // 乐观锁 + Remark string // 备注 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + DeletedBy string // 删除者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 + DeletedAt string // 删除时间 +} + +// productColumns holds the columns for the table hg_product. +var productColumns = ProductColumns{ + Id: "id", + TenantId: "tenant_id", + ProductNo: "product_no", + CategoryId: "category_id", + ProductType: "product_type", + PaymentType: "payment_type", + Name: "name", + ShopName: "shop_name", + PriceAmount: "price_amount", + Currency: "currency", + CoverAttachmentId: "cover_attachment_id", + CoverUrl: "cover_url", + DetailHtml: "detail_html", + IsRecommended: "is_recommended", + PublishStatus: "publish_status", + StartAt: "start_at", + EndAt: "end_at", + Sort: "sort", + Version: "version", + Remark: "remark", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + DeletedBy: "deleted_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewProductDao creates and returns a new DAO object for table data access. +func NewProductDao(handlers ...gdb.ModelHandler) *ProductDao { + return &ProductDao{ + group: "default", + table: "hg_product", + columns: productColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *ProductDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *ProductDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *ProductDao) Columns() ProductColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *ProductDao) 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 *ProductDao) 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 *ProductDao) 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/product_category.go b/server/internal/dao/internal/product_category.go new file mode 100644 index 0000000..7b1ba1c --- /dev/null +++ b/server/internal/dao/internal/product_category.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" +) + +// ProductCategoryDao is the data access object for the table hg_product_category. +type ProductCategoryDao 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 ProductCategoryColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// ProductCategoryColumns defines and stores column names for the table hg_product_category. +type ProductCategoryColumns struct { + Id string // 主键 + TenantId string // 租户ID + Pid string // 上级ID + Level string // 树等级 + Tree string // 关系树 + CategoryCode string // 分类编码 + Name string // 分类名称 + Status string // 状态 + Sort string // 排序 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + DeletedBy string // 删除者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 + DeletedAt string // 删除时间 +} + +// productCategoryColumns holds the columns for the table hg_product_category. +var productCategoryColumns = ProductCategoryColumns{ + Id: "id", + TenantId: "tenant_id", + Pid: "pid", + Level: "level", + Tree: "tree", + CategoryCode: "category_code", + Name: "name", + Status: "status", + Sort: "sort", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + DeletedBy: "deleted_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewProductCategoryDao creates and returns a new DAO object for table data access. +func NewProductCategoryDao(handlers ...gdb.ModelHandler) *ProductCategoryDao { + return &ProductCategoryDao{ + group: "default", + table: "hg_product_category", + columns: productCategoryColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *ProductCategoryDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *ProductCategoryDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *ProductCategoryDao) Columns() ProductCategoryColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *ProductCategoryDao) 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 *ProductCategoryDao) 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 *ProductCategoryDao) 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/recharge_order.go b/server/internal/dao/internal/recharge_order.go new file mode 100644 index 0000000..5981ce5 --- /dev/null +++ b/server/internal/dao/internal/recharge_order.go @@ -0,0 +1,125 @@ +// ========================================================================== +// 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" +) + +// RechargeOrderDao is the data access object for the table hg_recharge_order. +type RechargeOrderDao 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 RechargeOrderColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// RechargeOrderColumns defines and stores column names for the table hg_recharge_order. +type RechargeOrderColumns struct { + Id string // 主键 + TenantId string // 租户ID + RechargeNo string // 充值单号 + MemberId string // 会员ID + ChannelId string // 支付渠道ID + RequestAmount string // 申请金额(分) + PaidAmount string // 实付金额(分) + Currency string // 币种 + ExternalNo string // 外部支付单号 + VoucherAttachmentIds string // 打款凭证附件 + RechargeType string // 充值类型 + RechargeStatus string // 充值状态 + Remark string // 会员备注 + ReviewReasonCode string // 审核原因编码 + ReviewReason string // 审核意见 + ApprovalRequestId string // 审批单ID + LedgerId string // 入账台账ID + PaidAt string // 支付时间 + ReviewedAt string // 审核时间 + CreditedAt string // 入账时间 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// rechargeOrderColumns holds the columns for the table hg_recharge_order. +var rechargeOrderColumns = RechargeOrderColumns{ + Id: "id", + TenantId: "tenant_id", + RechargeNo: "recharge_no", + MemberId: "member_id", + ChannelId: "channel_id", + RequestAmount: "request_amount", + PaidAmount: "paid_amount", + Currency: "currency", + ExternalNo: "external_no", + VoucherAttachmentIds: "voucher_attachment_ids", + RechargeType: "recharge_type", + RechargeStatus: "recharge_status", + Remark: "remark", + ReviewReasonCode: "review_reason_code", + ReviewReason: "review_reason", + ApprovalRequestId: "approval_request_id", + LedgerId: "ledger_id", + PaidAt: "paid_at", + ReviewedAt: "reviewed_at", + CreditedAt: "credited_at", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewRechargeOrderDao creates and returns a new DAO object for table data access. +func NewRechargeOrderDao(handlers ...gdb.ModelHandler) *RechargeOrderDao { + return &RechargeOrderDao{ + group: "default", + table: "hg_recharge_order", + columns: rechargeOrderColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *RechargeOrderDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *RechargeOrderDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *RechargeOrderDao) Columns() RechargeOrderColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *RechargeOrderDao) 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 *RechargeOrderDao) 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 *RechargeOrderDao) 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/sensitive_access_log.go b/server/internal/dao/internal/sensitive_access_log.go new file mode 100644 index 0000000..2014fb4 --- /dev/null +++ b/server/internal/dao/internal/sensitive_access_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" +) + +// SensitiveAccessLogDao is the data access object for the table hg_sensitive_access_log. +type SensitiveAccessLogDao 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 SensitiveAccessLogColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SensitiveAccessLogColumns defines and stores column names for the table hg_sensitive_access_log. +type SensitiveAccessLogColumns struct { + Id string // 主键 + TenantId string // 租户ID + AccessNo string // 查看流水号 + ActorId string // 管理员ID + TargetType string // 目标类型 + TargetId string // 目标ID + FieldSet string // 查看字段集 + PurposeCode string // 用途编码 + PurposeText string // 用途说明 + AuthorizationNo string // 授权号 + MfaVerified string // 是否二次认证 + Result string // 查看结果 + TraceId string // 链路ID + CreatedAt string // 创建时间 +} + +// sensitiveAccessLogColumns holds the columns for the table hg_sensitive_access_log. +var sensitiveAccessLogColumns = SensitiveAccessLogColumns{ + Id: "id", + TenantId: "tenant_id", + AccessNo: "access_no", + ActorId: "actor_id", + TargetType: "target_type", + TargetId: "target_id", + FieldSet: "field_set", + PurposeCode: "purpose_code", + PurposeText: "purpose_text", + AuthorizationNo: "authorization_no", + MfaVerified: "mfa_verified", + Result: "result", + TraceId: "trace_id", + CreatedAt: "created_at", +} + +// NewSensitiveAccessLogDao creates and returns a new DAO object for table data access. +func NewSensitiveAccessLogDao(handlers ...gdb.ModelHandler) *SensitiveAccessLogDao { + return &SensitiveAccessLogDao{ + group: "default", + table: "hg_sensitive_access_log", + columns: sensitiveAccessLogColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SensitiveAccessLogDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SensitiveAccessLogDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SensitiveAccessLogDao) Columns() SensitiveAccessLogColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SensitiveAccessLogDao) 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 *SensitiveAccessLogDao) 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 *SensitiveAccessLogDao) 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/site_config_version.go b/server/internal/dao/internal/site_config_version.go new file mode 100644 index 0000000..6fb2707 --- /dev/null +++ b/server/internal/dao/internal/site_config_version.go @@ -0,0 +1,113 @@ +// ========================================================================== +// 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" +) + +// SiteConfigVersionDao is the data access object for the table hg_site_config_version. +type SiteConfigVersionDao 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 SiteConfigVersionColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SiteConfigVersionColumns defines and stores column names for the table hg_site_config_version. +type SiteConfigVersionColumns struct { + Id string // 主键 + TenantId string // 租户ID + ConfigNo string // 配置版本号 + ConfigGroup string // 配置组 + SchemaVersion string // Schema版本 + ConfigJson string // 完整配置快照 + ConfigDigest string // 配置摘要 + PublishStatus string // 发布状态 + EffectiveAt string // 计划生效时间 + PublishedAt string // 实际发布时间 + ApprovalRequestId string // 审批单ID + BaseVersionId string // 基础版本ID + Version string // 乐观锁 + Remark string // 备注 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// siteConfigVersionColumns holds the columns for the table hg_site_config_version. +var siteConfigVersionColumns = SiteConfigVersionColumns{ + Id: "id", + TenantId: "tenant_id", + ConfigNo: "config_no", + ConfigGroup: "config_group", + SchemaVersion: "schema_version", + ConfigJson: "config_json", + ConfigDigest: "config_digest", + PublishStatus: "publish_status", + EffectiveAt: "effective_at", + PublishedAt: "published_at", + ApprovalRequestId: "approval_request_id", + BaseVersionId: "base_version_id", + Version: "version", + Remark: "remark", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSiteConfigVersionDao creates and returns a new DAO object for table data access. +func NewSiteConfigVersionDao(handlers ...gdb.ModelHandler) *SiteConfigVersionDao { + return &SiteConfigVersionDao{ + group: "default", + table: "hg_site_config_version", + columns: siteConfigVersionColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SiteConfigVersionDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SiteConfigVersionDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SiteConfigVersionDao) Columns() SiteConfigVersionColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SiteConfigVersionDao) 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 *SiteConfigVersionDao) 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 *SiteConfigVersionDao) 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..41135bb --- /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,datetime,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..637f6a2 --- /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,datetime,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..89b72d5 --- /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,datetime,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..66f4f53 --- /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/task.go b/server/internal/dao/internal/task.go new file mode 100644 index 0000000..e4611ad --- /dev/null +++ b/server/internal/dao/internal/task.go @@ -0,0 +1,127 @@ +// ========================================================================== +// 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" +) + +// TaskDao is the data access object for the table hg_task. +type TaskDao 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 TaskColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// TaskColumns defines and stores column names for the table hg_task. +type TaskColumns struct { + Id string // 主键 + TenantId string // 租户ID + TaskNo string // 任务编号 + HallId string // 任务大厅ID + Title string // 标题 + Description string // 描述 + DetailHtml string // 清洗后的任务详情 + CoverAttachmentId string // 封面附件ID + CoverUrl string // 封面地址 + CommissionAmount string // 固定佣金(分) + CommissionRate string // 佣金万分比 + DailyLimit string // 每日总量 + PerMemberLimit string // 单会员限制 + StartAt string // 开始时间 + EndAt string // 结束时间 + PublishStatus string // 发布状态 + Sort string // 排序 + Version string // 乐观锁 + Remark string // 备注 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + DeletedBy string // 删除者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 + DeletedAt string // 删除时间 +} + +// taskColumns holds the columns for the table hg_task. +var taskColumns = TaskColumns{ + Id: "id", + TenantId: "tenant_id", + TaskNo: "task_no", + HallId: "hall_id", + Title: "title", + Description: "description", + DetailHtml: "detail_html", + CoverAttachmentId: "cover_attachment_id", + CoverUrl: "cover_url", + CommissionAmount: "commission_amount", + CommissionRate: "commission_rate", + DailyLimit: "daily_limit", + PerMemberLimit: "per_member_limit", + StartAt: "start_at", + EndAt: "end_at", + PublishStatus: "publish_status", + Sort: "sort", + Version: "version", + Remark: "remark", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + DeletedBy: "deleted_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewTaskDao creates and returns a new DAO object for table data access. +func NewTaskDao(handlers ...gdb.ModelHandler) *TaskDao { + return &TaskDao{ + group: "default", + table: "hg_task", + columns: taskColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *TaskDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *TaskDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *TaskDao) Columns() TaskColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *TaskDao) 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 *TaskDao) 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 *TaskDao) 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/task_hall.go b/server/internal/dao/internal/task_hall.go new file mode 100644 index 0000000..83d2674 --- /dev/null +++ b/server/internal/dao/internal/task_hall.go @@ -0,0 +1,117 @@ +// ========================================================================== +// 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" +) + +// TaskHallDao is the data access object for the table hg_task_hall. +type TaskHallDao 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 TaskHallColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// TaskHallColumns defines and stores column names for the table hg_task_hall. +type TaskHallColumns struct { + Id string // 主键 + TenantId string // 租户ID + HallCode string // 大厅编码 + Name string // 名称 + IconAttachmentId string // 图标附件ID + IconUrl string // 图标URL + Summary string // 简介 + CommissionRate string // 佣金万分比 + RateUnit string // 比例单位 + ClientRoute string // C端跳转 + PublishStatus string // 发布状态 + Sort string // 排序 + Version string // 乐观锁 + Remark string // 备注 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + DeletedBy string // 删除者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 + DeletedAt string // 删除时间 +} + +// taskHallColumns holds the columns for the table hg_task_hall. +var taskHallColumns = TaskHallColumns{ + Id: "id", + TenantId: "tenant_id", + HallCode: "hall_code", + Name: "name", + IconAttachmentId: "icon_attachment_id", + IconUrl: "icon_url", + Summary: "summary", + CommissionRate: "commission_rate", + RateUnit: "rate_unit", + ClientRoute: "client_route", + PublishStatus: "publish_status", + Sort: "sort", + Version: "version", + Remark: "remark", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + DeletedBy: "deleted_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewTaskHallDao creates and returns a new DAO object for table data access. +func NewTaskHallDao(handlers ...gdb.ModelHandler) *TaskHallDao { + return &TaskHallDao{ + group: "default", + table: "hg_task_hall", + columns: taskHallColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *TaskHallDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *TaskHallDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *TaskHallDao) Columns() TaskHallColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *TaskHallDao) 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 *TaskHallDao) 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 *TaskHallDao) 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/task_hall_level.go b/server/internal/dao/internal/task_hall_level.go new file mode 100644 index 0000000..1df7a84 --- /dev/null +++ b/server/internal/dao/internal/task_hall_level.go @@ -0,0 +1,87 @@ +// ========================================================================== +// 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" +) + +// TaskHallLevelDao is the data access object for the table hg_task_hall_level. +type TaskHallLevelDao 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 TaskHallLevelColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// TaskHallLevelColumns defines and stores column names for the table hg_task_hall_level. +type TaskHallLevelColumns struct { + Id string // 主键 + TenantId string // 租户ID + HallId string // 任务大厅ID + LevelId string // 会员等级ID + CreatedAt string // 创建时间 +} + +// taskHallLevelColumns holds the columns for the table hg_task_hall_level. +var taskHallLevelColumns = TaskHallLevelColumns{ + Id: "id", + TenantId: "tenant_id", + HallId: "hall_id", + LevelId: "level_id", + CreatedAt: "created_at", +} + +// NewTaskHallLevelDao creates and returns a new DAO object for table data access. +func NewTaskHallLevelDao(handlers ...gdb.ModelHandler) *TaskHallLevelDao { + return &TaskHallLevelDao{ + group: "default", + table: "hg_task_hall_level", + columns: taskHallLevelColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *TaskHallLevelDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *TaskHallLevelDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *TaskHallLevelDao) Columns() TaskHallLevelColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *TaskHallLevelDao) 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 *TaskHallLevelDao) 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 *TaskHallLevelDao) 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/task_level.go b/server/internal/dao/internal/task_level.go new file mode 100644 index 0000000..de06484 --- /dev/null +++ b/server/internal/dao/internal/task_level.go @@ -0,0 +1,87 @@ +// ========================================================================== +// 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" +) + +// TaskLevelDao is the data access object for the table hg_task_level. +type TaskLevelDao 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 TaskLevelColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// TaskLevelColumns defines and stores column names for the table hg_task_level. +type TaskLevelColumns struct { + Id string // 主键 + TenantId string // 租户ID + TaskId string // 任务ID + LevelId string // 会员等级ID + CreatedAt string // 创建时间 +} + +// taskLevelColumns holds the columns for the table hg_task_level. +var taskLevelColumns = TaskLevelColumns{ + Id: "id", + TenantId: "tenant_id", + TaskId: "task_id", + LevelId: "level_id", + CreatedAt: "created_at", +} + +// NewTaskLevelDao creates and returns a new DAO object for table data access. +func NewTaskLevelDao(handlers ...gdb.ModelHandler) *TaskLevelDao { + return &TaskLevelDao{ + group: "default", + table: "hg_task_level", + columns: taskLevelColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *TaskLevelDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *TaskLevelDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *TaskLevelDao) Columns() TaskLevelColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *TaskLevelDao) 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 *TaskLevelDao) 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 *TaskLevelDao) 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/task_submission.go b/server/internal/dao/internal/task_submission.go new file mode 100644 index 0000000..6a5ee2d --- /dev/null +++ b/server/internal/dao/internal/task_submission.go @@ -0,0 +1,125 @@ +// ========================================================================== +// 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" +) + +// TaskSubmissionDao is the data access object for the table hg_task_submission. +type TaskSubmissionDao 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 TaskSubmissionColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// TaskSubmissionColumns defines and stores column names for the table hg_task_submission. +type TaskSubmissionColumns struct { + Id string // 主键 + TenantId string // 租户ID + SubmissionNo string // 提交编号 + TradeOrderId string // 交易订单ID + TaskId string // 任务ID + MemberId string // 会员ID + MemberLevelId string // 提交时等级ID + EvidenceText string // 证据说明 + EvidenceAttachmentIds string // 证据附件 + SubmissionStatus string // 1待审 2通过 3驳回 4已结算 5已冲正 + CommissionAmount string // 佣金快照(分) + SuccessRate string // 成功率万分比 + ReviewedBy string // 审核人 + ReviewedAt string // 审核时间 + ReviewReasonCode string // 标准原因 + ReviewReason string // 审核意见 + AllowResubmit string // 是否允许重提 + LedgerId string // 佣金台账ID + SettledAt string // 结算时间 + ReversalApprovalId string // 冲正审批ID + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// taskSubmissionColumns holds the columns for the table hg_task_submission. +var taskSubmissionColumns = TaskSubmissionColumns{ + Id: "id", + TenantId: "tenant_id", + SubmissionNo: "submission_no", + TradeOrderId: "trade_order_id", + TaskId: "task_id", + MemberId: "member_id", + MemberLevelId: "member_level_id", + EvidenceText: "evidence_text", + EvidenceAttachmentIds: "evidence_attachment_ids", + SubmissionStatus: "submission_status", + CommissionAmount: "commission_amount", + SuccessRate: "success_rate", + ReviewedBy: "reviewed_by", + ReviewedAt: "reviewed_at", + ReviewReasonCode: "review_reason_code", + ReviewReason: "review_reason", + AllowResubmit: "allow_resubmit", + LedgerId: "ledger_id", + SettledAt: "settled_at", + ReversalApprovalId: "reversal_approval_id", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewTaskSubmissionDao creates and returns a new DAO object for table data access. +func NewTaskSubmissionDao(handlers ...gdb.ModelHandler) *TaskSubmissionDao { + return &TaskSubmissionDao{ + group: "default", + table: "hg_task_submission", + columns: taskSubmissionColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *TaskSubmissionDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *TaskSubmissionDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *TaskSubmissionDao) Columns() TaskSubmissionColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *TaskSubmissionDao) 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 *TaskSubmissionDao) 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 *TaskSubmissionDao) 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/internal/trade_order.go b/server/internal/dao/internal/trade_order.go new file mode 100644 index 0000000..23bab33 --- /dev/null +++ b/server/internal/dao/internal/trade_order.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" +) + +// TradeOrderDao is the data access object for the table hg_trade_order. +type TradeOrderDao 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 TradeOrderColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// TradeOrderColumns defines and stores column names for the table hg_trade_order. +type TradeOrderColumns struct { + Id string // 主键 + TenantId string // 租户ID + OrderNo string // 订单号 + MemberId string // 会员ID + TaskId string // 任务ID + ProductId string // 商品ID + ProductName string // 商品名称快照 + OrderType string // 订单类型 + Quantity string // 数量 + UnitPriceAmount string // 单价(分) + TotalAmount string // 订单金额(分) + CommissionAmount string // 佣金(分) + Currency string // 币种 + MemberLevelId string // 下单等级ID + RuleSnapshot string // 规则快照 + Message string // 订单消息 + OrderStatus string // 订单状态 + FreezeStatus string // 冻结状态 + ApprovalRequestId string // 人工处理审批ID + MatchedAt string // 匹配时间 + CompletedAt string // 完成时间 + UnfrozenAt string // 解冻时间 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + CreatedAt string // 下单时间 + UpdatedAt string // 更新时间 +} + +// tradeOrderColumns holds the columns for the table hg_trade_order. +var tradeOrderColumns = TradeOrderColumns{ + Id: "id", + TenantId: "tenant_id", + OrderNo: "order_no", + MemberId: "member_id", + TaskId: "task_id", + ProductId: "product_id", + ProductName: "product_name", + OrderType: "order_type", + Quantity: "quantity", + UnitPriceAmount: "unit_price_amount", + TotalAmount: "total_amount", + CommissionAmount: "commission_amount", + Currency: "currency", + MemberLevelId: "member_level_id", + RuleSnapshot: "rule_snapshot", + Message: "message", + OrderStatus: "order_status", + FreezeStatus: "freeze_status", + ApprovalRequestId: "approval_request_id", + MatchedAt: "matched_at", + CompletedAt: "completed_at", + UnfrozenAt: "unfrozen_at", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewTradeOrderDao creates and returns a new DAO object for table data access. +func NewTradeOrderDao(handlers ...gdb.ModelHandler) *TradeOrderDao { + return &TradeOrderDao{ + group: "default", + table: "hg_trade_order", + columns: tradeOrderColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *TradeOrderDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *TradeOrderDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *TradeOrderDao) Columns() TradeOrderColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *TradeOrderDao) 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 *TradeOrderDao) 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 *TradeOrderDao) 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/wallet_account.go b/server/internal/dao/internal/wallet_account.go new file mode 100644 index 0000000..bd5c0a6 --- /dev/null +++ b/server/internal/dao/internal/wallet_account.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" +) + +// WalletAccountDao is the data access object for the table hg_wallet_account. +type WalletAccountDao 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 WalletAccountColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// WalletAccountColumns defines and stores column names for the table hg_wallet_account. +type WalletAccountColumns struct { + Id string // 主键 + TenantId string // 租户ID + MemberId string // 会员ID + Currency string // 币种 + AvailableAmount string // 可用金额(分) + FrozenAmount string // 冻结金额(分) + TotalIncome string // 累计收入(分) + TotalExpense string // 累计支出(分) + AccountStatus string // 账户状态 + Version string // 乐观锁 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// walletAccountColumns holds the columns for the table hg_wallet_account. +var walletAccountColumns = WalletAccountColumns{ + Id: "id", + TenantId: "tenant_id", + MemberId: "member_id", + Currency: "currency", + AvailableAmount: "available_amount", + FrozenAmount: "frozen_amount", + TotalIncome: "total_income", + TotalExpense: "total_expense", + AccountStatus: "account_status", + Version: "version", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewWalletAccountDao creates and returns a new DAO object for table data access. +func NewWalletAccountDao(handlers ...gdb.ModelHandler) *WalletAccountDao { + return &WalletAccountDao{ + group: "default", + table: "hg_wallet_account", + columns: walletAccountColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *WalletAccountDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *WalletAccountDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *WalletAccountDao) Columns() WalletAccountColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *WalletAccountDao) 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 *WalletAccountDao) 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 *WalletAccountDao) 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/wallet_adjustment_request.go b/server/internal/dao/internal/wallet_adjustment_request.go new file mode 100644 index 0000000..e8202ba --- /dev/null +++ b/server/internal/dao/internal/wallet_adjustment_request.go @@ -0,0 +1,115 @@ +// ========================================================================== +// 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" +) + +// WalletAdjustmentRequestDao is the data access object for the table hg_wallet_adjustment_request. +type WalletAdjustmentRequestDao 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 WalletAdjustmentRequestColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// WalletAdjustmentRequestColumns defines and stores column names for the table hg_wallet_adjustment_request. +type WalletAdjustmentRequestColumns struct { + Id string // 主键 + TenantId string // 租户ID + RequestNo string // 申请单号 + MemberId string // 会员ID + AccountId string // 钱包账户ID + AdjustType string // 调整类型 + Direction string // 方向 1收入 2支出 + Amount string // 金额(分) + ReasonCode string // 原因编码 + ReasonText string // 原因说明 + EvidenceJson string // 凭证附件 + IdempotencyKey string // 幂等键 + RequestStatus string // 状态 1待审批 2已通过 3已拒绝 4已执行 + ApprovalRequestId string // 审批单ID + LedgerId string // 账变流水ID + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// walletAdjustmentRequestColumns holds the columns for the table hg_wallet_adjustment_request. +var walletAdjustmentRequestColumns = WalletAdjustmentRequestColumns{ + Id: "id", + TenantId: "tenant_id", + RequestNo: "request_no", + MemberId: "member_id", + AccountId: "account_id", + AdjustType: "adjust_type", + Direction: "direction", + Amount: "amount", + ReasonCode: "reason_code", + ReasonText: "reason_text", + EvidenceJson: "evidence_json", + IdempotencyKey: "idempotency_key", + RequestStatus: "request_status", + ApprovalRequestId: "approval_request_id", + LedgerId: "ledger_id", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewWalletAdjustmentRequestDao creates and returns a new DAO object for table data access. +func NewWalletAdjustmentRequestDao(handlers ...gdb.ModelHandler) *WalletAdjustmentRequestDao { + return &WalletAdjustmentRequestDao{ + group: "default", + table: "hg_wallet_adjustment_request", + columns: walletAdjustmentRequestColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *WalletAdjustmentRequestDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *WalletAdjustmentRequestDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *WalletAdjustmentRequestDao) Columns() WalletAdjustmentRequestColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *WalletAdjustmentRequestDao) 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 *WalletAdjustmentRequestDao) 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 *WalletAdjustmentRequestDao) 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/wallet_ledger.go b/server/internal/dao/internal/wallet_ledger.go new file mode 100644 index 0000000..1673f8a --- /dev/null +++ b/server/internal/dao/internal/wallet_ledger.go @@ -0,0 +1,115 @@ +// ========================================================================== +// 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" +) + +// WalletLedgerDao is the data access object for the table hg_wallet_ledger. +type WalletLedgerDao 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 WalletLedgerColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// WalletLedgerColumns defines and stores column names for the table hg_wallet_ledger. +type WalletLedgerColumns struct { + Id string // 主键 + TenantId string // 租户ID + LedgerNo string // 账变流水号 + AccountId string // 钱包账户ID + MemberId string // 会员ID + BizType string // 业务类型 + BizNo string // 业务单号 + EntryType string // 账变类型 + Direction string // 方向 1收入 2支出 + Amount string // 发生金额(分) + BeforeAmount string // 变更前余额(分) + AfterAmount string // 变更后余额(分) + Currency string // 币种 + ReversalOf string // 冲正原流水ID + IdempotencyKey string // 幂等键 + Remark string // 说明 + OperatorId string // 操作人 + OccurredAt string // 发生时间 + CreatedAt string // 创建时间 +} + +// walletLedgerColumns holds the columns for the table hg_wallet_ledger. +var walletLedgerColumns = WalletLedgerColumns{ + Id: "id", + TenantId: "tenant_id", + LedgerNo: "ledger_no", + AccountId: "account_id", + MemberId: "member_id", + BizType: "biz_type", + BizNo: "biz_no", + EntryType: "entry_type", + Direction: "direction", + Amount: "amount", + BeforeAmount: "before_amount", + AfterAmount: "after_amount", + Currency: "currency", + ReversalOf: "reversal_of", + IdempotencyKey: "idempotency_key", + Remark: "remark", + OperatorId: "operator_id", + OccurredAt: "occurred_at", + CreatedAt: "created_at", +} + +// NewWalletLedgerDao creates and returns a new DAO object for table data access. +func NewWalletLedgerDao(handlers ...gdb.ModelHandler) *WalletLedgerDao { + return &WalletLedgerDao{ + group: "default", + table: "hg_wallet_ledger", + columns: walletLedgerColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *WalletLedgerDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *WalletLedgerDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *WalletLedgerDao) Columns() WalletLedgerColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *WalletLedgerDao) 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 *WalletLedgerDao) 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 *WalletLedgerDao) 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/withdrawal_order.go b/server/internal/dao/internal/withdrawal_order.go new file mode 100644 index 0000000..648e1f4 --- /dev/null +++ b/server/internal/dao/internal/withdrawal_order.go @@ -0,0 +1,135 @@ +// ========================================================================== +// 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" +) + +// WithdrawalOrderDao is the data access object for the table hg_withdrawal_order. +type WithdrawalOrderDao 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 WithdrawalOrderColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// WithdrawalOrderColumns defines and stores column names for the table hg_withdrawal_order. +type WithdrawalOrderColumns struct { + Id string // 主键 + TenantId string // 租户ID + WithdrawalNo string // 提现单号 + MemberId string // 会员ID + PaymentAccountId string // 收款账户ID + ChannelId string // 付款渠道ID + RequestAmount string // 申请金额(分) + FeeAmount string // 手续费(分) + ActualAmount string // 实际到账(分) + Currency string // 币种 + AccountSnapshotCipher string // 收款账户加密快照 + AccountMask string // 收款账户脱敏快照 + BankName string // 银行名称快照 + HolderMask string // 开户名脱敏快照 + RiskResult string // 风控结果摘要 + WithdrawalStatus string // 提现状态 + ReviewReasonCode string // 审核原因编码 + ReviewReason string // 审核意见 + ApprovalRequestId string // 审批单ID + ExternalNo string // 外部付款单号 + FreezeLedgerId string // 冻结台账ID + FinalLedgerId string // 完成或解冻台账ID + ReviewedAt string // 审核时间 + ProcessedAt string // 处理时间 + CompletedAt string // 完成时间 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + CreatedAt string // 发起时间 + UpdatedAt string // 更新时间 +} + +// withdrawalOrderColumns holds the columns for the table hg_withdrawal_order. +var withdrawalOrderColumns = WithdrawalOrderColumns{ + Id: "id", + TenantId: "tenant_id", + WithdrawalNo: "withdrawal_no", + MemberId: "member_id", + PaymentAccountId: "payment_account_id", + ChannelId: "channel_id", + RequestAmount: "request_amount", + FeeAmount: "fee_amount", + ActualAmount: "actual_amount", + Currency: "currency", + AccountSnapshotCipher: "account_snapshot_cipher", + AccountMask: "account_mask", + BankName: "bank_name", + HolderMask: "holder_mask", + RiskResult: "risk_result", + WithdrawalStatus: "withdrawal_status", + ReviewReasonCode: "review_reason_code", + ReviewReason: "review_reason", + ApprovalRequestId: "approval_request_id", + ExternalNo: "external_no", + FreezeLedgerId: "freeze_ledger_id", + FinalLedgerId: "final_ledger_id", + ReviewedAt: "reviewed_at", + ProcessedAt: "processed_at", + CompletedAt: "completed_at", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewWithdrawalOrderDao creates and returns a new DAO object for table data access. +func NewWithdrawalOrderDao(handlers ...gdb.ModelHandler) *WithdrawalOrderDao { + return &WithdrawalOrderDao{ + group: "default", + table: "hg_withdrawal_order", + columns: withdrawalOrderColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *WithdrawalOrderDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *WithdrawalOrderDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *WithdrawalOrderDao) Columns() WithdrawalOrderColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *WithdrawalOrderDao) 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 *WithdrawalOrderDao) 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 *WithdrawalOrderDao) 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/outbox_event.go b/server/internal/dao/outbox_event.go new file mode 100644 index 0000000..f880b6b --- /dev/null +++ b/server/internal/dao/outbox_event.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" +) + +// outboxEventDao is the data access object for the table hg_outbox_event. +// You can define custom methods on it to extend its functionality as needed. +type outboxEventDao struct { + *internal.OutboxEventDao +} + +var ( + // OutboxEvent is a globally accessible object for table hg_outbox_event operations. + OutboxEvent = outboxEventDao{internal.NewOutboxEventDao()} +) + +// Add your custom methods and functionality below. 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/payment_channel.go b/server/internal/dao/payment_channel.go new file mode 100644 index 0000000..28257f7 --- /dev/null +++ b/server/internal/dao/payment_channel.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" +) + +// paymentChannelDao is the data access object for the table hg_payment_channel. +// You can define custom methods on it to extend its functionality as needed. +type paymentChannelDao struct { + *internal.PaymentChannelDao +} + +var ( + // PaymentChannel is a globally accessible object for table hg_payment_channel operations. + PaymentChannel = paymentChannelDao{internal.NewPaymentChannelDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/product.go b/server/internal/dao/product.go new file mode 100644 index 0000000..b4bf4c5 --- /dev/null +++ b/server/internal/dao/product.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" +) + +// productDao is the data access object for the table hg_product. +// You can define custom methods on it to extend its functionality as needed. +type productDao struct { + *internal.ProductDao +} + +var ( + // Product is a globally accessible object for table hg_product operations. + Product = productDao{internal.NewProductDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/product_category.go b/server/internal/dao/product_category.go new file mode 100644 index 0000000..eea4d26 --- /dev/null +++ b/server/internal/dao/product_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" +) + +// productCategoryDao is the data access object for the table hg_product_category. +// You can define custom methods on it to extend its functionality as needed. +type productCategoryDao struct { + *internal.ProductCategoryDao +} + +var ( + // ProductCategory is a globally accessible object for table hg_product_category operations. + ProductCategory = productCategoryDao{internal.NewProductCategoryDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/recharge_order.go b/server/internal/dao/recharge_order.go new file mode 100644 index 0000000..fdd09a8 --- /dev/null +++ b/server/internal/dao/recharge_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" +) + +// rechargeOrderDao is the data access object for the table hg_recharge_order. +// You can define custom methods on it to extend its functionality as needed. +type rechargeOrderDao struct { + *internal.RechargeOrderDao +} + +var ( + // RechargeOrder is a globally accessible object for table hg_recharge_order operations. + RechargeOrder = rechargeOrderDao{internal.NewRechargeOrderDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sensitive_access_log.go b/server/internal/dao/sensitive_access_log.go new file mode 100644 index 0000000..d92dfeb --- /dev/null +++ b/server/internal/dao/sensitive_access_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" +) + +// sensitiveAccessLogDao is the data access object for the table hg_sensitive_access_log. +// You can define custom methods on it to extend its functionality as needed. +type sensitiveAccessLogDao struct { + *internal.SensitiveAccessLogDao +} + +var ( + // SensitiveAccessLog is a globally accessible object for table hg_sensitive_access_log operations. + SensitiveAccessLog = sensitiveAccessLogDao{internal.NewSensitiveAccessLogDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/site_config_version.go b/server/internal/dao/site_config_version.go new file mode 100644 index 0000000..f64dcb4 --- /dev/null +++ b/server/internal/dao/site_config_version.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" +) + +// siteConfigVersionDao is the data access object for the table hg_site_config_version. +// You can define custom methods on it to extend its functionality as needed. +type siteConfigVersionDao struct { + *internal.SiteConfigVersionDao +} + +var ( + // SiteConfigVersion is a globally accessible object for table hg_site_config_version operations. + SiteConfigVersion = siteConfigVersionDao{internal.NewSiteConfigVersionDao()} +) + +// 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/task.go b/server/internal/dao/task.go new file mode 100644 index 0000000..fe97745 --- /dev/null +++ b/server/internal/dao/task.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" +) + +// taskDao is the data access object for the table hg_task. +// You can define custom methods on it to extend its functionality as needed. +type taskDao struct { + *internal.TaskDao +} + +var ( + // Task is a globally accessible object for table hg_task operations. + Task = taskDao{internal.NewTaskDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/task_hall.go b/server/internal/dao/task_hall.go new file mode 100644 index 0000000..2be1816 --- /dev/null +++ b/server/internal/dao/task_hall.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" +) + +// taskHallDao is the data access object for the table hg_task_hall. +// You can define custom methods on it to extend its functionality as needed. +type taskHallDao struct { + *internal.TaskHallDao +} + +var ( + // TaskHall is a globally accessible object for table hg_task_hall operations. + TaskHall = taskHallDao{internal.NewTaskHallDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/task_hall_level.go b/server/internal/dao/task_hall_level.go new file mode 100644 index 0000000..829a21a --- /dev/null +++ b/server/internal/dao/task_hall_level.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" +) + +// taskHallLevelDao is the data access object for the table hg_task_hall_level. +// You can define custom methods on it to extend its functionality as needed. +type taskHallLevelDao struct { + *internal.TaskHallLevelDao +} + +var ( + // TaskHallLevel is a globally accessible object for table hg_task_hall_level operations. + TaskHallLevel = taskHallLevelDao{internal.NewTaskHallLevelDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/task_level.go b/server/internal/dao/task_level.go new file mode 100644 index 0000000..49bd439 --- /dev/null +++ b/server/internal/dao/task_level.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" +) + +// taskLevelDao is the data access object for the table hg_task_level. +// You can define custom methods on it to extend its functionality as needed. +type taskLevelDao struct { + *internal.TaskLevelDao +} + +var ( + // TaskLevel is a globally accessible object for table hg_task_level operations. + TaskLevel = taskLevelDao{internal.NewTaskLevelDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/task_submission.go b/server/internal/dao/task_submission.go new file mode 100644 index 0000000..f43d94f --- /dev/null +++ b/server/internal/dao/task_submission.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" +) + +// taskSubmissionDao is the data access object for the table hg_task_submission. +// You can define custom methods on it to extend its functionality as needed. +type taskSubmissionDao struct { + *internal.TaskSubmissionDao +} + +var ( + // TaskSubmission is a globally accessible object for table hg_task_submission operations. + TaskSubmission = taskSubmissionDao{internal.NewTaskSubmissionDao()} +) + +// 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/dao/trade_order.go b/server/internal/dao/trade_order.go new file mode 100644 index 0000000..fdf1fa2 --- /dev/null +++ b/server/internal/dao/trade_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" +) + +// tradeOrderDao is the data access object for the table hg_trade_order. +// You can define custom methods on it to extend its functionality as needed. +type tradeOrderDao struct { + *internal.TradeOrderDao +} + +var ( + // TradeOrder is a globally accessible object for table hg_trade_order operations. + TradeOrder = tradeOrderDao{internal.NewTradeOrderDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/wallet_account.go b/server/internal/dao/wallet_account.go new file mode 100644 index 0000000..89208dc --- /dev/null +++ b/server/internal/dao/wallet_account.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" +) + +// walletAccountDao is the data access object for the table hg_wallet_account. +// You can define custom methods on it to extend its functionality as needed. +type walletAccountDao struct { + *internal.WalletAccountDao +} + +var ( + // WalletAccount is a globally accessible object for table hg_wallet_account operations. + WalletAccount = walletAccountDao{internal.NewWalletAccountDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/wallet_adjustment_request.go b/server/internal/dao/wallet_adjustment_request.go new file mode 100644 index 0000000..acc84ca --- /dev/null +++ b/server/internal/dao/wallet_adjustment_request.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" +) + +// walletAdjustmentRequestDao is the data access object for the table hg_wallet_adjustment_request. +// You can define custom methods on it to extend its functionality as needed. +type walletAdjustmentRequestDao struct { + *internal.WalletAdjustmentRequestDao +} + +var ( + // WalletAdjustmentRequest is a globally accessible object for table hg_wallet_adjustment_request operations. + WalletAdjustmentRequest = walletAdjustmentRequestDao{internal.NewWalletAdjustmentRequestDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/wallet_ledger.go b/server/internal/dao/wallet_ledger.go new file mode 100644 index 0000000..373beaf --- /dev/null +++ b/server/internal/dao/wallet_ledger.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" +) + +// walletLedgerDao is the data access object for the table hg_wallet_ledger. +// You can define custom methods on it to extend its functionality as needed. +type walletLedgerDao struct { + *internal.WalletLedgerDao +} + +var ( + // WalletLedger is a globally accessible object for table hg_wallet_ledger operations. + WalletLedger = walletLedgerDao{internal.NewWalletLedgerDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/withdrawal_order.go b/server/internal/dao/withdrawal_order.go new file mode 100644 index 0000000..4714fcf --- /dev/null +++ b/server/internal/dao/withdrawal_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" +) + +// withdrawalOrderDao is the data access object for the table hg_withdrawal_order. +// You can define custom methods on it to extend its functionality as needed. +type withdrawalOrderDao struct { + *internal.WithdrawalOrderDao +} + +var ( + // WithdrawalOrder is a globally accessible object for table hg_withdrawal_order operations. + WithdrawalOrder = withdrawalOrderDao{internal.NewWithdrawalOrderDao()} +) + +// 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..0c4b31e --- /dev/null +++ b/server/internal/library/casbin/casbin_test.go @@ -0,0 +1,68 @@ +// 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..e49d4b2 --- /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/migrations/20261008_001_governance.sql b/server/storage/data/migrations/20261008_001_governance.sql new file mode 100644 index 0000000..806e588 --- /dev/null +++ b/server/storage/data/migrations/20261008_001_governance.sql @@ -0,0 +1,161 @@ +-- S1 基础治理:审批、审计、幂等、Outbox 与看板汇总 +-- MySQL 8.0+ + +CREATE TABLE IF NOT EXISTS `hg_approval_request` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `approval_no` varchar(32) NOT NULL COMMENT '审批单号', + `approval_type` varchar(32) NOT NULL COMMENT '审批类型', + `target_type` varchar(32) NOT NULL COMMENT '目标类型', + `target_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '目标ID', + `action` varchar(64) NOT NULL COMMENT '拟执行动作', + `title` varchar(200) NOT NULL COMMENT '审批标题', + `payload_json` json NOT NULL COMMENT '待执行数据快照', + `diff_json` json DEFAULT NULL COMMENT '前后差异', + `risk_level` tinyint NOT NULL DEFAULT 1 COMMENT '风险级别', + `required_approvals` int unsigned NOT NULL DEFAULT 1 COMMENT '需要通过数', + `approval_status` tinyint NOT NULL DEFAULT 1 COMMENT '审批状态', + `applicant_id` bigint unsigned NOT NULL COMMENT '申请人', + `submitted_at` datetime(3) DEFAULT NULL COMMENT '提交时间', + `decided_at` datetime(3) DEFAULT NULL COMMENT '决定时间', + `executed_at` datetime(3) DEFAULT NULL COMMENT '执行时间', + `expire_at` datetime(3) DEFAULT NULL COMMENT '超时时间', + `version` int unsigned NOT NULL DEFAULT 0 COMMENT '乐观锁', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_approval_no` (`approval_no`), + KEY `idx_approval_type_status` (`tenant_id`,`approval_type`,`approval_status`,`created_at`,`id`), + KEY `idx_approval_target` (`tenant_id`,`target_type`,`target_id`,`created_at`), + KEY `idx_approval_applicant` (`tenant_id`,`applicant_id`,`created_at`), + KEY `idx_approval_expire` (`approval_status`,`expire_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='治理_审批请求'; + +CREATE TABLE IF NOT EXISTS `hg_approval_action` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `approval_request_id` bigint unsigned NOT NULL COMMENT '审批请求ID', + `step_no` int unsigned NOT NULL COMMENT '节点顺序', + `actor_id` bigint unsigned NOT NULL COMMENT '操作人', + `action` tinyint NOT NULL COMMENT '审批动作', + `reason_code` varchar(64) DEFAULT NULL COMMENT '原因编码', + `comment` varchar(1000) DEFAULT NULL COMMENT '审批意见', + `snapshot_json` json NOT NULL COMMENT '操作时快照', + `actor_ip_cipher` varchar(512) DEFAULT NULL COMMENT '操作IP密文', + `mfa_verified` tinyint NOT NULL DEFAULT 0 COMMENT '是否二次认证', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_approval_step_actor` (`approval_request_id`,`step_no`,`actor_id`), + KEY `idx_approval_action_request` (`tenant_id`,`approval_request_id`,`created_at`), + KEY `idx_approval_action_actor` (`tenant_id`,`actor_id`,`created_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='治理_审批动作'; + +CREATE TABLE IF NOT EXISTS `hg_sensitive_access_log` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `access_no` varchar(32) NOT NULL COMMENT '查看流水号', + `actor_id` bigint unsigned NOT NULL COMMENT '管理员ID', + `target_type` varchar(32) NOT NULL COMMENT '目标类型', + `target_id` bigint unsigned NOT NULL COMMENT '目标ID', + `field_set` json NOT NULL COMMENT '查看字段集', + `purpose_code` varchar(64) NOT NULL COMMENT '用途编码', + `purpose_text` varchar(500) NOT NULL COMMENT '用途说明', + `authorization_no` varchar(64) DEFAULT NULL COMMENT '授权号', + `mfa_verified` tinyint NOT NULL DEFAULT 0 COMMENT '是否二次认证', + `result` tinyint NOT NULL COMMENT '查看结果', + `trace_id` varchar(64) NOT NULL COMMENT '链路ID', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_sensitive_access_no` (`access_no`), + KEY `idx_sensitive_actor` (`tenant_id`,`actor_id`,`created_at`), + KEY `idx_sensitive_target` (`tenant_id`,`target_type`,`target_id`,`created_at`), + KEY `idx_sensitive_trace` (`trace_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='治理_敏感数据查看日志'; + +CREATE TABLE IF NOT EXISTS `hg_biz_audit_log` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `audit_no` varchar(32) NOT NULL COMMENT '审计号', + `actor_type` tinyint NOT NULL COMMENT '操作人类型', + `actor_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '操作人ID', + `module` varchar(64) NOT NULL COMMENT '业务模块', + `action` varchar(64) NOT NULL COMMENT '操作动作', + `target_type` varchar(64) NOT NULL COMMENT '目标类型', + `target_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '目标ID', + `before_digest` char(64) DEFAULT NULL COMMENT '变更前摘要', + `after_digest` char(64) DEFAULT NULL COMMENT '变更后摘要', + `change_json` json DEFAULT NULL COMMENT '已脱敏差异', + `reason` varchar(500) DEFAULT NULL COMMENT '操作原因', + `approval_no` varchar(32) DEFAULT NULL COMMENT '审批单号', + `trace_id` varchar(64) NOT NULL COMMENT '链路ID', + `prev_hash` char(64) DEFAULT NULL COMMENT '前一条哈希', + `row_hash` char(64) NOT NULL COMMENT '当前行哈希', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_biz_audit_no` (`audit_no`), + KEY `idx_biz_audit_actor` (`tenant_id`,`actor_id`,`created_at`), + KEY `idx_biz_audit_target` (`tenant_id`,`target_type`,`target_id`,`created_at`), + KEY `idx_biz_audit_module` (`tenant_id`,`module`,`action`,`created_at`), + KEY `idx_biz_audit_trace` (`trace_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='治理_业务审计日志'; + +CREATE TABLE IF NOT EXISTS `hg_idempotency_record` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `scope` varchar(64) NOT NULL COMMENT '业务作用域', + `idempotency_key` varchar(128) NOT NULL COMMENT '幂等键', + `request_digest` char(64) NOT NULL COMMENT '请求摘要', + `resource_type` varchar(64) DEFAULT NULL COMMENT '资源类型', + `resource_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '资源ID', + `process_status` tinyint NOT NULL DEFAULT 1 COMMENT '处理状态', + `response_code` int DEFAULT NULL COMMENT '响应码', + `response_digest` char(64) DEFAULT NULL COMMENT '响应摘要', + `expire_at` datetime(3) NOT NULL COMMENT '过期时间', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_idempotency_scope_key` (`tenant_id`,`scope`,`idempotency_key`), + KEY `idx_idempotency_expire` (`expire_at`), + KEY `idx_idempotency_resource` (`tenant_id`,`resource_type`,`resource_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='治理_幂等记录'; + +CREATE TABLE IF NOT EXISTS `hg_outbox_event` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `event_no` varchar(32) NOT NULL COMMENT '事件号', + `aggregate_type` varchar(64) NOT NULL COMMENT '聚合根类型', + `aggregate_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '聚合根ID', + `event_type` varchar(128) NOT NULL COMMENT '事件类型', + `payload_json` json NOT NULL COMMENT '已脱敏事件数据', + `publish_status` tinyint NOT NULL DEFAULT 1 COMMENT '发送状态', + `retry_count` int unsigned NOT NULL DEFAULT 0 COMMENT '重试次数', + `next_retry_at` datetime(3) DEFAULT NULL COMMENT '下次重试时间', + `last_error` varchar(1000) DEFAULT NULL COMMENT '最后错误', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `published_at` datetime(3) DEFAULT NULL COMMENT '发送时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_outbox_event_no` (`event_no`), + KEY `idx_outbox_publish` (`publish_status`,`next_retry_at`,`id`), + KEY `idx_outbox_aggregate` (`tenant_id`,`aggregate_type`,`aggregate_id`,`created_at`), + KEY `idx_outbox_event_type` (`tenant_id`,`event_type`,`created_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='治理_事件出站箱'; + +CREATE TABLE IF NOT EXISTS `hg_dashboard_daily_stat` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `stat_date` date NOT NULL COMMENT '统计日期', + `dimension_type` varchar(32) NOT NULL COMMENT '维度类型', + `dimension_value` varchar(64) NOT NULL COMMENT '维度值', + `metric_code` varchar(64) NOT NULL COMMENT '指标编码', + `metric_count` bigint NOT NULL DEFAULT 0 COMMENT '指标数量', + `metric_amount` bigint NOT NULL DEFAULT 0 COMMENT '指标金额(最小货币单位)', + `calculated_at` datetime(3) NOT NULL COMMENT '计算时间', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_dashboard_metric` (`tenant_id`,`stat_date`,`dimension_type`,`dimension_value`,`metric_code`), + KEY `idx_dashboard_date_metric` (`tenant_id`,`stat_date`,`metric_code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='治理_看板日汇总'; diff --git a/server/storage/data/migrations/20261008_002_governance_menu.sql b/server/storage/data/migrations/20261008_002_governance_menu.sql new file mode 100644 index 0000000..5265ed5 --- /dev/null +++ b/server/storage/data/migrations/20261008_002_governance_menu.sql @@ -0,0 +1,50 @@ +-- S1 基础治理菜单。重复执行安全;普通角色需在“角色权限”中勾选新菜单。 +SET @now = NOW(); + +INSERT INTO `hg_admin_menu` +(`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`,`created_at`,`updated_at`) +SELECT 0,1,'','基础治理','governance','/governance','AuditOutlined',1,'','','','LAYOUT',1,'',0,0,'',0,0,0,90,'审批、审计与安全治理',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='governance'); +UPDATE `hg_admin_menu` SET `icon`='AuditOutlined', `updated_at`=@now WHERE `name`='governance'; +SET @governanceId = (SELECT `id` FROM `hg_admin_menu` WHERE `name`='governance' LIMIT 1); + +INSERT INTO `hg_admin_menu` +(`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`,`created_at`,`updated_at`) +SELECT @governanceId,2,CONCAT('tr_',@governanceId,' '),'审批中心','governance_approval','approval','',2,'','/approval/list','','/governance/approval/index',1,'',0,0,'',0,0,0,10,'高风险操作审批',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='governance_approval'); +SET @approvalId = (SELECT `id` FROM `hg_admin_menu` WHERE `name`='governance_approval' LIMIT 1); + +INSERT INTO `hg_admin_menu` +(`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`,`created_at`,`updated_at`) +SELECT @governanceId,2,CONCAT('tr_',@governanceId,' '),'业务审计','governance_biz_audit','biz-audit','',2,'','/bizAudit/list','','/governance/biz-audit/index',1,'',0,0,'',0,0,0,20,'不可变业务审计日志',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='governance_biz_audit'); +SET @auditId = (SELECT `id` FROM `hg_admin_menu` WHERE `name`='governance_biz_audit' LIMIT 1); + +INSERT INTO `hg_admin_menu` +(`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`,`created_at`,`updated_at`) +SELECT @approvalId,3,CONCAT('tr_',@governanceId,' tr_',@approvalId,' '),'审批详情','governance_approval_view','','',3,'','/approval/view','','',1,'',0,0,'',0,1,0,10,'',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='governance_approval_view'); +INSERT INTO `hg_admin_menu` +(`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`,`created_at`,`updated_at`) +SELECT @approvalId,3,CONCAT('tr_',@governanceId,' tr_',@approvalId,' '),'创建审批','governance_approval_create','','',3,'','/approval/create','','',1,'',0,0,'',0,1,0,20,'',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='governance_approval_create'); +INSERT INTO `hg_admin_menu` +(`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`,`created_at`,`updated_at`) +SELECT @approvalId,3,CONCAT('tr_',@governanceId,' tr_',@approvalId,' '),'提交审批','governance_approval_submit','','',3,'','/approval/submit','','',1,'',0,0,'',0,1,0,30,'',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='governance_approval_submit'); +INSERT INTO `hg_admin_menu` +(`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`,`created_at`,`updated_at`) +SELECT @approvalId,3,CONCAT('tr_',@governanceId,' tr_',@approvalId,' '),'通过审批','governance_approval_approve','','',3,'','/approval/approve','','',1,'',0,0,'',0,1,0,40,'',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='governance_approval_approve'); +INSERT INTO `hg_admin_menu` +(`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`,`created_at`,`updated_at`) +SELECT @approvalId,3,CONCAT('tr_',@governanceId,' tr_',@approvalId,' '),'驳回审批','governance_approval_reject','','',3,'','/approval/reject','','',1,'',0,0,'',0,1,0,50,'',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='governance_approval_reject'); +INSERT INTO `hg_admin_menu` +(`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`,`created_at`,`updated_at`) +SELECT @approvalId,3,CONCAT('tr_',@governanceId,' tr_',@approvalId,' '),'取消审批','governance_approval_cancel','','',3,'','/approval/cancel','','',1,'',0,0,'',0,1,0,60,'',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='governance_approval_cancel'); +INSERT INTO `hg_admin_menu` +(`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`,`created_at`,`updated_at`) +SELECT @auditId,3,CONCAT('tr_',@governanceId,' tr_',@auditId,' '),'审计详情','governance_biz_audit_view','','',3,'','/bizAudit/view','','',1,'',0,0,'',0,1,0,10,'',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='governance_biz_audit_view'); diff --git a/server/storage/data/migrations/20261008_003_dashboard_menu.sql b/server/storage/data/migrations/20261008_003_dashboard_menu.sql new file mode 100644 index 0000000..d7d1f92 --- /dev/null +++ b/server/storage/data/migrations/20261008_003_dashboard_menu.sql @@ -0,0 +1,25 @@ +-- 首页业务看板接口与敏感金额权限。 +SET @now = NOW(); +UPDATE `hg_admin_menu` +SET `title`='主页', `icon`='HomeOutlined', `redirect`='/dashboard/console', `sort`=10, `updated_at`=@now +WHERE `name`='Dashboard'; + +UPDATE `hg_admin_menu` +SET `title`='首页', `icon`='DashboardOutlined', `permissions`='/console/stat,/dashboard/summary', `sort`=10, `updated_at`=@now +WHERE `name`='dashboard_console'; + +UPDATE `hg_admin_menu` +SET `hidden`=1, `updated_at`=@now +WHERE `name`='dashboard_workplace'; + +SET @dashboardId = (SELECT `id` FROM `hg_admin_menu` WHERE `name`='dashboard_console' LIMIT 1); +SET @dashboardPid = (SELECT `pid` FROM `hg_admin_menu` WHERE `id`=@dashboardId LIMIT 1); + +INSERT INTO `hg_admin_menu` +(`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`,`created_at`,`updated_at`) +SELECT @dashboardId,3,CONCAT('tr_',@dashboardPid,' tr_',@dashboardId,' '),'查看看板金额','dashboard_amount_view','','',3,'','/dashboard/amount','','',1,'',0,0,'',0,1,0,10,'控制首页资金指标、趋势金额和渠道金额可见性',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='dashboard_amount_view'); + +SET @amountMenuId = (SELECT `id` FROM `hg_admin_menu` WHERE `name`='dashboard_amount_view' LIMIT 1); +INSERT IGNORE INTO `hg_admin_role_menu` (`role_id`,`menu_id`) +SELECT `id`, @amountMenuId FROM `hg_admin_role` WHERE `key`='finance'; diff --git a/server/storage/data/migrations/20261008_004_portal_content.sql b/server/storage/data/migrations/20261008_004_portal_content.sql new file mode 100644 index 0000000..33f3cee --- /dev/null +++ b/server/storage/data/migrations/20261008_004_portal_content.sql @@ -0,0 +1,220 @@ +-- 第五章:门户、内容、Banner 与手工商城。 +-- MySQL 8.0+ + +CREATE TABLE IF NOT EXISTS `hg_site_config_version` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `config_no` varchar(32) NOT NULL COMMENT '配置版本号', + `config_group` varchar(64) NOT NULL COMMENT '配置组', + `schema_version` varchar(32) NOT NULL DEFAULT '1.0' COMMENT 'Schema版本', + `config_json` json NOT NULL COMMENT '完整配置快照', + `config_digest` char(64) NOT NULL COMMENT '配置摘要', + `publish_status` tinyint NOT NULL DEFAULT 1 COMMENT '发布状态', + `effective_at` datetime(3) DEFAULT NULL COMMENT '计划生效时间', + `published_at` datetime(3) DEFAULT NULL COMMENT '实际发布时间', + `approval_request_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '审批单ID', + `base_version_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '基础版本ID', + `version` int unsigned NOT NULL DEFAULT 0 COMMENT '乐观锁', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_site_config_no` (`tenant_id`,`config_no`), + KEY `idx_site_config_current` (`tenant_id`,`config_group`,`publish_status`,`effective_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='门户_站点配置版本'; + +CREATE TABLE IF NOT EXISTS `hg_content` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `content_key` varchar(64) NOT NULL COMMENT '稳定内容标识', + `content_type` varchar(32) NOT NULL COMMENT '内容类型', + `title` varchar(200) NOT NULL COMMENT '后台标题', + `published_version_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '当前发布版本ID', + `publish_status` tinyint NOT NULL DEFAULT 1 COMMENT '发布状态', + `published_at` datetime(3) DEFAULT NULL COMMENT '发布时间', + `sort` int NOT NULL DEFAULT 0 COMMENT '排序', + `version` int unsigned NOT NULL DEFAULT 0 COMMENT '乐观锁', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `deleted_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '删除者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + `deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_content_key` (`tenant_id`,`content_key`), + KEY `idx_content_type_status` (`tenant_id`,`content_type`,`publish_status`,`sort`,`id`), + KEY `idx_content_deleted` (`deleted_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='门户_文本内容'; + +CREATE TABLE IF NOT EXISTS `hg_content_version` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `content_id` bigint unsigned NOT NULL COMMENT '内容ID', + `version_no` int unsigned NOT NULL COMMENT '版本号', + `title` varchar(200) NOT NULL COMMENT '展示标题', + `summary` varchar(500) DEFAULT NULL COMMENT '摘要', + `body_html` longtext NOT NULL COMMENT '清洗后HTML', + `body_text` longtext COMMENT '降级文本', + `cover_url` varchar(1000) DEFAULT NULL COMMENT '封面图片URL', + `asset_ids` json DEFAULT NULL COMMENT '引用附件ID', + `publish_status` tinyint NOT NULL DEFAULT 1 COMMENT '发布状态', + `effective_at` datetime(3) DEFAULT NULL COMMENT '计划生效时间', + `approval_request_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '审批单ID', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_content_version` (`content_id`,`version_no`), + KEY `idx_content_version_status` (`tenant_id`,`content_id`,`publish_status`,`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='门户_文本内容版本'; + +CREATE TABLE IF NOT EXISTS `hg_banner` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `name` varchar(100) NOT NULL COMMENT '后台名称', + `position` varchar(32) NOT NULL DEFAULT 'home_top' COMMENT '投放位置', + `image_attachment_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '图片附件ID', + `image_url` varchar(1000) NOT NULL COMMENT '图片URL', + `alt_text` varchar(200) NOT NULL COMMENT '替代文本', + `target_type` tinyint NOT NULL DEFAULT 1 COMMENT '跳转类型', + `target_value` varchar(500) DEFAULT NULL COMMENT '跳转值', + `start_at` datetime(3) DEFAULT NULL COMMENT '开始时间', + `end_at` datetime(3) DEFAULT NULL COMMENT '结束时间', + `publish_status` tinyint NOT NULL DEFAULT 1 COMMENT '发布状态', + `sort` int NOT NULL DEFAULT 0 COMMENT '排序', + `version` int unsigned NOT NULL DEFAULT 0 COMMENT '乐观锁', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `deleted_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '删除者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + `deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`), + KEY `idx_banner_delivery` (`tenant_id`,`position`,`publish_status`,`start_at`,`end_at`,`sort`), + KEY `idx_banner_deleted` (`deleted_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='门户_Banner'; + +CREATE TABLE IF NOT EXISTS `hg_product` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `product_no` varchar(32) NOT NULL COMMENT '商品编号', + `category_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '分类ID', + `product_type` tinyint NOT NULL DEFAULT 2 COMMENT '商品类型', + `payment_type` varchar(32) NOT NULL DEFAULT 'balance' COMMENT '支付方式', + `name` varchar(200) NOT NULL COMMENT '商品名称', + `shop_name` varchar(100) NOT NULL DEFAULT '' COMMENT '店铺名称', + `price_amount` bigint NOT NULL DEFAULT 0 COMMENT '单价(分)', + `currency` char(3) NOT NULL DEFAULT 'CNY' COMMENT '币种', + `cover_attachment_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '封面附件ID', + `cover_url` varchar(1000) NOT NULL COMMENT '封面URL', + `detail_html` longtext COMMENT '商品详情', + `is_recommended` tinyint NOT NULL DEFAULT 2 COMMENT '是否推荐', + `publish_status` tinyint NOT NULL DEFAULT 1 COMMENT '发布状态', + `start_at` datetime(3) DEFAULT NULL COMMENT '展示开始时间', + `end_at` datetime(3) DEFAULT NULL COMMENT '展示结束时间', + `sort` int NOT NULL DEFAULT 0 COMMENT '排序', + `version` int unsigned NOT NULL DEFAULT 0 COMMENT '乐观锁', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `deleted_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '删除者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + `deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_product_no` (`tenant_id`,`product_no`), + KEY `idx_product_manual` (`tenant_id`,`product_type`,`publish_status`,`sort`,`id`), + KEY `idx_product_deleted` (`deleted_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='商城_商品'; + +-- 复用 HotGo 数据库字典:内容类型。 +INSERT INTO `hg_sys_dict_type` (`name`,`type`,`remark`,`status`,`created_at`,`updated_at`) +SELECT '内容类型','content_type','门户文本内容分类',1,NOW(),NOW() +WHERE NOT EXISTS (SELECT 1 FROM `hg_sys_dict_type` WHERE `type`='content_type'); +INSERT INTO `hg_sys_dict_data` (`type`,`label`,`value`,`value_type`,`list_class`,`sort`,`status`,`remark`,`created_at`,`updated_at`) +SELECT 'content_type',x.label,x.value,'string',x.list_class,x.sort,1,'门户内容类型',NOW(),NOW() +FROM ( + SELECT '平台公告' label,'notice' value,'primary' list_class,10 sort UNION ALL + SELECT '平台简介','about','info',20 UNION ALL + SELECT '订单规则','rule','warning',30 UNION ALL + SELECT '常见问题','faq','success',40 UNION ALL + SELECT '使用指南','guide','default',50 UNION ALL + SELECT '利息宝规则','interest_rule','warning',60 UNION ALL + SELECT '首页滚动','home_ticker','primary',70 UNION ALL + SELECT '订单提示','order_tip','warning',80 UNION ALL + SELECT '活动内容','activity','success',90 UNION ALL + SELECT '首页弹窗','popup','error',100 UNION ALL + SELECT '公司资质','qualification','info',110 +) x +WHERE NOT EXISTS (SELECT 1 FROM `hg_sys_dict_data` d WHERE d.`type`='content_type' AND d.`value`=x.value); + +-- 菜单和接口权限。菜单由数据库驱动,重复执行不会生成重复数据。 +SET @now = NOW(); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT 0,1,'','门户管理','portal','/portal','HomeOutlined',1,'','','','LAYOUT',1,'',1,0,'',0,0,0,30,'门户、文本、Banner和手工商城',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='portal'); +SET @portalId=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='portal' LIMIT 1); +SET @homeId=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='Dashboard' LIMIT 1); + +-- 门户能力合并到“主页”,保留原 /portal/* 地址,仅调整菜单归属。 +UPDATE `hg_admin_menu` SET `hidden`=1, `status`=2, `updated_at`=@now WHERE `name`='portal'; + +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT @homeId,2,CONCAT('tr_',@homeId,' '),'网站设置','portal_site_config','/portal/site-config','SettingOutlined',2,'','/siteConfig/current,/siteConfig/history','','/portal/site-config/index',1,'',0,0,'',1,0,0,20,'版本化站点配置',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='portal_site_config'); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT @homeId,2,CONCAT('tr_',@homeId,' '),'文本管理','portal_content','/portal/content','FileTextOutlined',2,'','/portalContent/list,/portalContent/view','','/portal/content/index',1,'',0,0,'',1,0,0,30,'版本化文本内容',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='portal_content'); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT @homeId,2,CONCAT('tr_',@homeId,' '),'Banner 设置','portal_banner','/portal/banner','PictureOutlined',2,'','/banner/list,/banner/view','','/portal/banner/index',1,'',0,0,'',1,0,0,40,'首页Banner',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='portal_banner'); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT @homeId,2,CONCAT('tr_',@homeId,' '),'手工商城','portal_manual_product','/portal/manual-product','ShoppingOutlined',2,'','/manualProduct/list,/manualProduct/view','','/portal/manual-product/index',1,'',0,0,'',1,0,0,50,'手工商城商品',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='portal_manual_product'); + +UPDATE `hg_admin_menu` +SET `pid`=@homeId, `level`=2, `tree`=CONCAT('tr_',@homeId,' '), + `path`=CASE `name` + WHEN 'portal_site_config' THEN '/portal/site-config' + WHEN 'portal_content' THEN '/portal/content' + WHEN 'portal_banner' THEN '/portal/banner' + WHEN 'portal_manual_product' THEN '/portal/manual-product' + END, + `sort`=CASE `name` + WHEN 'portal_site_config' THEN 20 WHEN 'portal_content' THEN 30 + WHEN 'portal_banner' THEN 40 WHEN 'portal_manual_product' THEN 50 + END, + `updated_at`=@now +WHERE `name` IN ('portal_site_config','portal_content','portal_banner','portal_manual_product'); + +SET @siteMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='portal_site_config' LIMIT 1); +SET @contentMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='portal_content' LIMIT 1); +SET @bannerMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='portal_banner' LIMIT 1); +SET @productMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='portal_manual_product' LIMIT 1); + +UPDATE `hg_admin_menu` +SET `tree`=CONCAT('tr_',@homeId,' tr_',`pid`,' '), `updated_at`=@now +WHERE `pid` IN (@siteMenu,@contentMenu,@bannerMenu,@productMenu) AND `level`=3; + +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT @siteMenu,3,CONCAT('tr_',@homeId,' tr_',@siteMenu,' '),x.title,x.name,'','',3,'',x.permissions,'','',1,'',0,0,'',0,1,0,x.sort,'网站设置操作权限',1,@now,@now FROM ( + SELECT '保存配置草稿' title,'portal_site_save' name,'/siteConfig/save' permissions,10 sort UNION ALL SELECT '提交配置审批','portal_site_submit','/siteConfig/submit',20 UNION ALL SELECT '发布配置','portal_site_publish','/siteConfig/publish',30 UNION ALL SELECT '回滚配置','portal_site_rollback','/siteConfig/rollback',40 +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name`=x.name); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT @contentMenu,3,CONCAT('tr_',@homeId,' tr_',@contentMenu,' '),x.title,x.name,'','',3,'',x.permissions,'','',1,'',0,0,'',0,1,0,x.sort,'文本管理操作权限',1,@now,@now FROM ( + SELECT '编辑文本' title,'portal_content_edit' name,'/portalContent/edit' permissions,10 sort UNION ALL SELECT '发布文本','portal_content_publish','/portalContent/publish',20 UNION ALL SELECT '下线文本','portal_content_offline','/portalContent/offline',30 UNION ALL SELECT '删除文本','portal_content_delete','/portalContent/delete',40 +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name`=x.name); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT @bannerMenu,3,CONCAT('tr_',@homeId,' tr_',@bannerMenu,' '),x.title,x.name,'','',3,'',x.permissions,'','',1,'',0,0,'',0,1,0,x.sort,'Banner操作权限',1,@now,@now FROM ( + SELECT '编辑 Banner' title,'portal_banner_edit' name,'/banner/edit' permissions,10 sort UNION ALL SELECT '发布下线 Banner','portal_banner_status','/banner/status',20 UNION ALL SELECT '删除 Banner','portal_banner_delete','/banner/delete',30 +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name`=x.name); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT @productMenu,3,CONCAT('tr_',@homeId,' tr_',@productMenu,' '),x.title,x.name,'','',3,'',x.permissions,'','',1,'',0,0,'',0,1,0,x.sort,'手工商城操作权限',1,@now,@now FROM ( + SELECT '编辑商品' title,'portal_product_edit' name,'/manualProduct/edit' permissions,10 sort UNION ALL SELECT '上下架商品','portal_product_status','/manualProduct/status',20 UNION ALL SELECT '删除商品','portal_product_delete','/manualProduct/delete',30 +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name`=x.name); + +INSERT IGNORE INTO `hg_admin_role_menu` (`role_id`,`menu_id`) +SELECT r.id,m.id FROM `hg_admin_role` r JOIN `hg_admin_menu` m ON m.name IN ('Dashboard','dashboard_console','portal_site_config','portal_content','portal_banner','portal_manual_product','portal_site_save','portal_site_submit','portal_site_publish','portal_site_rollback','portal_content_edit','portal_content_publish','portal_content_offline','portal_content_delete','portal_banner_edit','portal_banner_status','portal_banner_delete','portal_product_edit','portal_product_status','portal_product_delete') WHERE r.`key` IN ('manage','business'); diff --git a/server/storage/data/migrations/20261008_005_member_management.sql b/server/storage/data/migrations/20261008_005_member_management.sql new file mode 100644 index 0000000..febc156 --- /dev/null +++ b/server/storage/data/migrations/20261008_005_member_management.sql @@ -0,0 +1,281 @@ +-- 第六章:会员、敏感资料、团队、钱包调账与会员通知。 +-- MySQL 8.0+;金额统一使用分,敏感字段仅保存密文、检索哈希和脱敏值。 + +CREATE TABLE IF NOT EXISTS `hg_app_member` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `member_no` varchar(32) NOT NULL COMMENT '会员编号', + `username` varchar(64) NOT NULL COMMENT '用户名', + `mobile_cipher` text NOT NULL COMMENT '手机号密文(AES-GCM)', + `mobile_hash` char(64) NOT NULL COMMENT '手机号检索哈希(HMAC-SHA256)', + `mobile_mask` varchar(32) NOT NULL COMMENT '手机号脱敏值', + `password_hash` varchar(100) NOT NULL COMMENT '登录密码哈希(bcrypt)', + `trade_password_hash` varchar(100) NOT NULL DEFAULT '' COMMENT '交易密码哈希', + `level_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '会员等级ID', + `parent_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '上级会员ID', + `level` int NOT NULL DEFAULT 1 COMMENT '团队层级', + `tree` varchar(512) NOT NULL DEFAULT '' COMMENT '关系树', + `invite_code` varchar(32) NOT NULL COMMENT '邀请码', + `member_status` tinyint NOT NULL DEFAULT 1 COMMENT '会员状态', + `risk_status` tinyint NOT NULL DEFAULT 1 COMMENT '风控状态', + `auto_dispatch` tinyint NOT NULL DEFAULT 2 COMMENT '自动派单', + `credit_score` int NOT NULL DEFAULT 100 COMMENT '信用分', + `is_test_account` tinyint NOT NULL DEFAULT 2 COMMENT '测试账号', + `last_login_at` datetime(3) DEFAULT NULL COMMENT '最后登录时间', + `last_login_ip_cipher` text COMMENT '最后登录IP密文', + `last_login_ip_mask` varchar(64) NOT NULL DEFAULT '' COMMENT '最后登录IP脱敏值', + `last_login_region` varchar(128) NOT NULL DEFAULT '' COMMENT '最后登录地区', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `deleted_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '删除者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + `deleted_at` datetime(3) DEFAULT NULL COMMENT '注销时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_app_member_no` (`tenant_id`,`member_no`), + UNIQUE KEY `uk_app_member_username` (`tenant_id`,`username`), + UNIQUE KEY `uk_app_member_mobile_hash` (`tenant_id`,`mobile_hash`), + UNIQUE KEY `uk_app_member_invite_code` (`tenant_id`,`invite_code`), + KEY `idx_app_member_team` (`tenant_id`,`parent_id`,`level`,`created_at`), + KEY `idx_app_member_status` (`tenant_id`,`member_status`,`auto_dispatch`,`created_at`), + KEY `idx_app_member_deleted` (`deleted_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='会员_会员主档'; + +CREATE TABLE IF NOT EXISTS `hg_app_member_profile` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `member_id` bigint unsigned NOT NULL COMMENT '会员ID', + `real_name_cipher` text COMMENT '真实姓名密文', + `real_name_mask` varchar(64) NOT NULL DEFAULT '' COMMENT '真实姓名脱敏值', + `id_no_cipher` text COMMENT '证件号密文', + `id_no_hash` char(64) NOT NULL DEFAULT '' COMMENT '证件号检索哈希', + `id_no_mask` varchar(64) NOT NULL DEFAULT '' COMMENT '证件号脱敏值', + `avatar_attachment_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '头像附件ID', + `kyc_status` tinyint NOT NULL DEFAULT 1 COMMENT '实名状态', + `kyc_verified_at` datetime(3) DEFAULT NULL COMMENT '实名时间', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_member_profile_member` (`tenant_id`,`member_id`), + KEY `idx_member_profile_id_hash` (`tenant_id`,`id_no_hash`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='会员_扩展资料'; + +CREATE TABLE IF NOT EXISTS `hg_app_member_address` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `member_id` bigint unsigned NOT NULL COMMENT '会员ID', + `receiver_cipher` text NOT NULL COMMENT '收货人密文', + `receiver_mask` varchar(64) NOT NULL COMMENT '收货人脱敏值', + `mobile_cipher` text NOT NULL COMMENT '手机号密文', + `mobile_mask` varchar(32) NOT NULL COMMENT '手机号脱敏值', + `province` varchar(64) NOT NULL DEFAULT '' COMMENT '省', + `city` varchar(64) NOT NULL DEFAULT '' COMMENT '市', + `district` varchar(64) NOT NULL DEFAULT '' COMMENT '区县', + `address_cipher` text NOT NULL COMMENT '详细地址密文', + `address_mask` varchar(255) NOT NULL COMMENT '详细地址脱敏值', + `is_default` tinyint NOT NULL DEFAULT 2 COMMENT '默认地址', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `deleted_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '删除者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + `deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`), + KEY `idx_member_address_member` (`tenant_id`,`member_id`,`is_default`,`id`), + KEY `idx_member_address_deleted` (`deleted_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='会员_收货地址'; + +CREATE TABLE IF NOT EXISTS `hg_app_member_payment_account` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `member_id` bigint unsigned NOT NULL COMMENT '会员ID', + `account_type` tinyint NOT NULL COMMENT '账户类型', + `bank_code` varchar(32) NOT NULL DEFAULT '' COMMENT '银行编码', + `bank_name` varchar(100) NOT NULL DEFAULT '' COMMENT '银行名称', + `holder_cipher` text NOT NULL COMMENT '持有人密文', + `holder_mask` varchar(64) NOT NULL COMMENT '持有人脱敏值', + `mobile_cipher` text COMMENT '预留手机号密文', + `mobile_mask` varchar(32) NOT NULL DEFAULT '' COMMENT '预留手机号脱敏值', + `account_no_cipher` text NOT NULL COMMENT '账号密文', + `account_no_hash` char(64) NOT NULL COMMENT '账号检索哈希', + `account_no_mask` varchar(80) NOT NULL COMMENT '账号脱敏值', + `qr_attachment_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '收款码附件ID', + `verify_status` tinyint NOT NULL DEFAULT 1 COMMENT '核验状态', + `is_default` tinyint NOT NULL DEFAULT 2 COMMENT '默认账户', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `deleted_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '删除者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + `deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_member_payment_account` (`tenant_id`,`member_id`,`account_type`,`account_no_hash`), + KEY `idx_member_payment_member` (`tenant_id`,`member_id`,`is_default`,`id`), + KEY `idx_member_payment_deleted` (`deleted_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='会员_收款账户'; + +CREATE TABLE IF NOT EXISTS `hg_app_member_status_log` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `member_id` bigint unsigned NOT NULL COMMENT '会员ID', + `from_status` tinyint NOT NULL COMMENT '原状态', + `to_status` tinyint NOT NULL COMMENT '目标状态', + `reason_code` varchar(64) NOT NULL COMMENT '原因编码', + `reason_text` varchar(500) NOT NULL COMMENT '原因说明', + `effective_at` datetime(3) NOT NULL COMMENT '生效时间', + `expire_at` datetime(3) DEFAULT NULL COMMENT '失效时间', + `approval_request_id` bigint unsigned NOT NULL COMMENT '审批单ID', + `operator_id` bigint unsigned NOT NULL COMMENT '执行人', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + PRIMARY KEY (`id`), + KEY `idx_member_status_log` (`tenant_id`,`member_id`,`id`), + UNIQUE KEY `uk_member_status_approval` (`tenant_id`,`approval_request_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='会员_状态变更日志'; + +CREATE TABLE IF NOT EXISTS `hg_wallet_account` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `member_id` bigint unsigned NOT NULL COMMENT '会员ID', + `currency` char(3) NOT NULL DEFAULT 'CNY' COMMENT '币种', + `available_amount` bigint NOT NULL DEFAULT 0 COMMENT '可用金额(分)', + `frozen_amount` bigint NOT NULL DEFAULT 0 COMMENT '冻结金额(分)', + `total_income` bigint NOT NULL DEFAULT 0 COMMENT '累计收入(分)', + `total_expense` bigint NOT NULL DEFAULT 0 COMMENT '累计支出(分)', + `account_status` tinyint NOT NULL DEFAULT 1 COMMENT '账户状态', + `version` int unsigned NOT NULL DEFAULT 0 COMMENT '乐观锁', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_wallet_member_currency` (`tenant_id`,`member_id`,`currency`), + CONSTRAINT `chk_wallet_available_nonnegative` CHECK (`available_amount` >= 0), + CONSTRAINT `chk_wallet_frozen_nonnegative` CHECK (`frozen_amount` >= 0) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='钱包_会员账户'; + +CREATE TABLE IF NOT EXISTS `hg_wallet_ledger` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `ledger_no` varchar(40) NOT NULL COMMENT '账变流水号', + `account_id` bigint unsigned NOT NULL COMMENT '钱包账户ID', + `member_id` bigint unsigned NOT NULL COMMENT '会员ID', + `biz_type` varchar(32) NOT NULL COMMENT '业务类型', + `biz_no` varchar(64) NOT NULL COMMENT '业务单号', + `entry_type` varchar(32) NOT NULL COMMENT '账变类型', + `direction` tinyint NOT NULL COMMENT '方向 1收入 2支出', + `amount` bigint NOT NULL COMMENT '发生金额(分)', + `before_amount` bigint NOT NULL COMMENT '变更前余额(分)', + `after_amount` bigint NOT NULL COMMENT '变更后余额(分)', + `currency` char(3) NOT NULL DEFAULT 'CNY' COMMENT '币种', + `reversal_of` bigint unsigned NOT NULL DEFAULT 0 COMMENT '冲正原流水ID', + `idempotency_key` varchar(80) NOT NULL COMMENT '幂等键', + `remark` varchar(500) NOT NULL DEFAULT '' COMMENT '说明', + `operator_id` bigint unsigned NOT NULL COMMENT '操作人', + `occurred_at` datetime(3) NOT NULL COMMENT '发生时间', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_wallet_ledger_no` (`tenant_id`,`ledger_no`), + UNIQUE KEY `uk_wallet_ledger_idempotency` (`tenant_id`,`account_id`,`idempotency_key`), + KEY `idx_wallet_ledger_member` (`tenant_id`,`member_id`,`occurred_at`,`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='钱包_不可变账变流水'; + +CREATE TABLE IF NOT EXISTS `hg_wallet_adjustment_request` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `request_no` varchar(40) NOT NULL COMMENT '申请单号', + `member_id` bigint unsigned NOT NULL COMMENT '会员ID', + `account_id` bigint unsigned NOT NULL COMMENT '钱包账户ID', + `adjust_type` tinyint NOT NULL COMMENT '调整类型', + `direction` tinyint NOT NULL COMMENT '方向 1收入 2支出', + `amount` bigint NOT NULL COMMENT '金额(分)', + `reason_code` varchar(64) NOT NULL COMMENT '原因编码', + `reason_text` varchar(500) NOT NULL COMMENT '原因说明', + `evidence_json` json DEFAULT NULL COMMENT '凭证附件', + `idempotency_key` varchar(80) NOT NULL COMMENT '幂等键', + `request_status` tinyint NOT NULL DEFAULT 1 COMMENT '状态 1待审批 2已通过 3已拒绝 4已执行', + `approval_request_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '审批单ID', + `ledger_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '账变流水ID', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_wallet_adjustment_no` (`tenant_id`,`request_no`), + UNIQUE KEY `uk_wallet_adjustment_idempotency` (`tenant_id`,`idempotency_key`), + KEY `idx_wallet_adjustment_member` (`tenant_id`,`member_id`,`request_status`,`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='钱包_调账申请'; + +CREATE TABLE IF NOT EXISTS `hg_app_member_notice` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `member_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '会员ID,0为全体', + `title` varchar(120) NOT NULL COMMENT '标题', + `content` varchar(500) NOT NULL COMMENT '内容', + `source_type` tinyint NOT NULL DEFAULT 1 COMMENT '来源 1真实通知 2运营模拟', + `start_at` datetime(3) NOT NULL COMMENT '开始时间', + `end_at` datetime(3) NOT NULL COMMENT '结束时间', + `notice_status` tinyint NOT NULL DEFAULT 1 COMMENT '状态 1有效 2撤回', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`id`), + KEY `idx_member_notice_delivery` (`tenant_id`,`member_id`,`notice_status`,`start_at`,`end_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='会员_通知与运营弹幕'; + +-- 复用 HotGo 原有数据库字典。 +INSERT INTO `hg_sys_dict_type` (`name`,`type`,`remark`,`status`,`created_at`,`updated_at`) +SELECT x.name,x.type,x.remark,1,NOW(),NOW() FROM ( + SELECT '会员禁用原因' name,'member_disable_reason' type,'会员状态变更原因' remark UNION ALL + SELECT '钱包调账原因','wallet_adjust_reason','资金调账原因' +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_sys_dict_type` d WHERE d.`type`=x.type); + +INSERT INTO `hg_sys_dict_data` (`type`,`label`,`value`,`value_type`,`list_class`,`sort`,`status`,`remark`,`created_at`,`updated_at`) +SELECT x.type,x.label,x.value,'string',x.list_class,x.sort,1,x.remark,NOW(),NOW() FROM ( + SELECT 'member_disable_reason' type,'风控处置' label,'risk_control' value,'error' list_class,10 sort,'会员禁用原因' remark UNION ALL + SELECT 'member_disable_reason','用户申请','user_request','warning',20,'会员禁用原因' UNION ALL + SELECT 'member_disable_reason','违规行为','violation','error',30,'会员禁用原因' UNION ALL + SELECT 'wallet_adjust_reason','活动奖励','campaign_reward','success',10,'资金调账原因' UNION ALL + SELECT 'wallet_adjust_reason','人工补账','manual_supplement','primary',20,'资金调账原因' UNION ALL + SELECT 'wallet_adjust_reason','差错扣回','error_deduction','error',30,'资金调账原因' UNION ALL + SELECT 'wallet_adjust_reason','冲正处理','reversal','warning',40,'资金调账原因' +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_sys_dict_data` d WHERE d.`type`=x.type AND d.`value`=x.value); + +-- 会员管理菜单与接口权限。 +SET @now=NOW(); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT 0,1,'','会员管理','app_member','/app-member','UserOutlined',1,'','','','LAYOUT',1,'',1,0,'',0,0,0,40,'会员、团队、收款账户与钱包治理',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='app_member'); +SET @memberRoot=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='app_member' LIMIT 1); + +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT @memberRoot,2,CONCAT('tr_',@memberRoot,' '),x.title,x.name,x.path,x.icon,2,'',x.permissions,'',x.component,1,'',0,0,'',1,0,0,x.sort,x.remark,1,@now,@now FROM ( + SELECT '会员列表' title,'app_member_list' name,'list' path,'TeamOutlined' icon,'/appMember/list,/appMember/view' permissions,'/app-member/list/index' component,10 sort,'会员主档与关联资料' remark UNION ALL + SELECT '资金调账' ,'app_member_wallet','wallet','WalletOutlined','/appMember/walletList','/app-member/wallet/index',20,'审批驱动的会员钱包调账' UNION ALL + SELECT '会员通知' ,'app_member_notice','notice','NotificationOutlined','/appMember/noticeList','/app-member/notice/index',30,'真实通知与运营模拟明确标识' +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name`=x.name); + +SET @memberMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='app_member_list' LIMIT 1); +SET @walletMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='app_member_wallet' LIMIT 1); +SET @noticeMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='app_member_notice' LIMIT 1); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT x.pid,3,x.tree,x.title,x.name,'','',3,'',x.permissions,'','',1,'',0,0,'',0,1,0,x.sort,'会员管理操作权限',1,@now,@now FROM ( + SELECT @memberMenu pid,CONCAT('tr_',@memberRoot,' tr_',@memberMenu,' ') tree,'新增编辑会员' title,'app_member_edit' name,'/appMember/edit' permissions,10 sort UNION ALL + SELECT @memberMenu,CONCAT('tr_',@memberRoot,' tr_',@memberMenu,' '),'注销会员','app_member_delete','/appMember/delete',20 UNION ALL + SELECT @memberMenu,CONCAT('tr_',@memberRoot,' tr_',@memberMenu,' '),'自动派单开关','app_member_dispatch','/appMember/autoDispatch',30 UNION ALL + SELECT @memberMenu,CONCAT('tr_',@memberRoot,' tr_',@memberMenu,' '),'收款账户管理','app_member_payment','/appMember/paymentList,/appMember/paymentEdit,/appMember/paymentDelete',40 UNION ALL + SELECT @memberMenu,CONCAT('tr_',@memberRoot,' tr_',@memberMenu,' '),'地址管理','app_member_address','/appMember/addressList,/appMember/addressEdit,/appMember/addressDelete',50 UNION ALL + SELECT @memberMenu,CONCAT('tr_',@memberRoot,' tr_',@memberMenu,' '),'查看敏感信息','app_member_sensitive','/appMember/sensitive',60 UNION ALL + SELECT @memberMenu,CONCAT('tr_',@memberRoot,' tr_',@memberMenu,' '),'团队查询','app_member_team','/appMember/team',70 UNION ALL + SELECT @memberMenu,CONCAT('tr_',@memberRoot,' tr_',@memberMenu,' '),'禁用申请','app_member_status_request','/appMember/statusRequest',80 UNION ALL + SELECT @memberMenu,CONCAT('tr_',@memberRoot,' tr_',@memberMenu,' '),'执行会员状态','app_member_status_execute','/appMember/statusExecute',90 UNION ALL + SELECT @walletMenu,CONCAT('tr_',@memberRoot,' tr_',@walletMenu,' '),'发起资金调账','app_member_wallet_request','/appMember/walletRequest',10 UNION ALL + SELECT @walletMenu,CONCAT('tr_',@memberRoot,' tr_',@walletMenu,' '),'执行资金调账','app_member_wallet_execute','/appMember/walletExecute',20 UNION ALL + SELECT @noticeMenu,CONCAT('tr_',@memberRoot,' tr_',@noticeMenu,' '),'创建会员通知','app_member_notice_edit','/appMember/noticeEdit',10 UNION ALL + SELECT @noticeMenu,CONCAT('tr_',@memberRoot,' tr_',@noticeMenu,' '),'撤回会员通知','app_member_notice_revoke','/appMember/noticeRevoke',20 +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name`=x.name); + +INSERT IGNORE INTO `hg_admin_role_menu` (`role_id`,`menu_id`) +SELECT r.id,m.id FROM `hg_admin_role` r JOIN `hg_admin_menu` m ON m.name IN ( + 'app_member','app_member_list','app_member_wallet','app_member_notice','app_member_edit','app_member_delete','app_member_dispatch','app_member_payment','app_member_address','app_member_sensitive','app_member_team','app_member_status_request','app_member_status_execute','app_member_wallet_request','app_member_wallet_execute','app_member_notice_edit','app_member_notice_revoke' +) WHERE r.`key` IN ('manage','business'); diff --git a/server/storage/data/migrations/20261008_006_member_level_task_hall.sql b/server/storage/data/migrations/20261008_006_member_level_task_hall.sql new file mode 100644 index 0000000..c1bb758 --- /dev/null +++ b/server/storage/data/migrations/20261008_006_member_level_task_hall.sql @@ -0,0 +1,119 @@ +-- 第七章:会员等级与任务大厅。 +-- 金额使用分,比例使用万分比;会员等级规则采用不可变版本发布。 + +CREATE TABLE IF NOT EXISTS `hg_app_member_level` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `level_code` varchar(32) NOT NULL COMMENT '稳定等级编码', + `name` varchar(64) NOT NULL COMMENT '等级名称', + `icon_attachment_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '图标附件ID', + `icon_url` varchar(1000) NOT NULL DEFAULT '' COMMENT '图标URL', + `current_version_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '当前发布版本ID', + `member_count` bigint unsigned NOT NULL DEFAULT 0 COMMENT '会员数(可重建)', + `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态 1正常 2停用', + `sort` int NOT NULL DEFAULT 0 COMMENT '排序', + `remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `deleted_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '删除者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + `deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_member_level_code` (`tenant_id`,`level_code`), + UNIQUE KEY `uk_member_level_name` (`tenant_id`,`name`), + KEY `idx_member_level_status` (`tenant_id`,`status`,`sort`,`id`), + KEY `idx_member_level_deleted` (`deleted_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='会员_会员等级'; + +CREATE TABLE IF NOT EXISTS `hg_app_member_level_version` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `level_id` bigint unsigned NOT NULL COMMENT '等级ID', + `version_no` int unsigned NOT NULL COMMENT '版本号', + `upgrade_amount` bigint NOT NULL DEFAULT 0 COMMENT '升级金额(分)', + `gift_amount` bigint NOT NULL DEFAULT 0 COMMENT '赠送金额(分)', + `daily_order_limit` int unsigned NOT NULL DEFAULT 0 COMMENT '每日接单次数', + `commission_rate` int unsigned NOT NULL DEFAULT 0 COMMENT '佣金万分比', + `daily_withdraw_limit` int unsigned NOT NULL DEFAULT 0 COMMENT '每日提现次数', + `rule_json` json DEFAULT NULL COMMENT '扩展规则快照', + `publish_status` tinyint NOT NULL DEFAULT 1 COMMENT '发布状态', + `effective_at` datetime(3) DEFAULT NULL COMMENT '计划生效时间', + `published_at` datetime(3) DEFAULT NULL COMMENT '发布时间', + `approval_request_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '审批单ID', + `base_version_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '基础版本ID', + `version` int unsigned NOT NULL DEFAULT 0 COMMENT '乐观锁', + `remark` varchar(500) NOT NULL DEFAULT '' COMMENT '变更说明', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_member_level_version` (`level_id`,`version_no`), + KEY `idx_member_level_version_status` (`tenant_id`,`level_id`,`publish_status`,`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='会员_等级规则版本'; + +CREATE TABLE IF NOT EXISTS `hg_task_hall` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `hall_code` varchar(32) NOT NULL COMMENT '大厅编码', + `name` varchar(100) NOT NULL COMMENT '名称', + `icon_attachment_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '图标附件ID', + `icon_url` varchar(1000) NOT NULL DEFAULT '' COMMENT '图标URL', + `summary` varchar(500) NOT NULL DEFAULT '' COMMENT '简介', + `commission_rate` int unsigned NOT NULL DEFAULT 0 COMMENT '佣金万分比', + `rate_unit` varchar(20) NOT NULL DEFAULT 'basis_point' COMMENT '比例单位', + `client_route` varchar(500) NOT NULL DEFAULT '' COMMENT 'C端跳转', + `publish_status` tinyint NOT NULL DEFAULT 1 COMMENT '发布状态', + `sort` int NOT NULL DEFAULT 0 COMMENT '排序', + `version` int unsigned NOT NULL DEFAULT 0 COMMENT '乐观锁', + `remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `deleted_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '删除者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + `deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_task_hall_code` (`tenant_id`,`hall_code`), + UNIQUE KEY `uk_task_hall_name` (`tenant_id`,`name`), + KEY `idx_task_hall_status` (`tenant_id`,`publish_status`,`sort`,`id`), + KEY `idx_task_hall_deleted` (`deleted_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='任务_任务大厅'; + +CREATE TABLE IF NOT EXISTS `hg_task_hall_level` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `hall_id` bigint unsigned NOT NULL COMMENT '任务大厅ID', + `level_id` bigint unsigned NOT NULL COMMENT '会员等级ID', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_task_hall_level` (`tenant_id`,`hall_id`,`level_id`), + KEY `idx_task_hall_level_level` (`tenant_id`,`level_id`,`hall_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='任务_大厅可用会员等级'; + +SET @now=NOW(); +SET @memberRoot=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='app_member' LIMIT 1); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT @memberRoot,2,CONCAT('tr_',@memberRoot,' '),x.title,x.name,x.path,x.icon,2,'',x.permissions,'',x.component,1,'',0,0,'',1,0,0,x.sort,x.remark,1,@now,@now FROM ( + SELECT '会员等级' title,'app_member_level' name,'level' path,'CrownOutlined' icon,'/memberLevel/list,/memberLevel/view,/memberLevel/history' permissions,'/app-member/level/index' component,40 sort,'版本化会员等级规则' remark UNION ALL + SELECT '任务大厅','app_task_hall','task-hall','AppstoreOutlined','/taskHall/list,/taskHall/view','/app-member/task-hall/index',50,'任务大厅及可用等级' +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name`=x.name); + +SET @levelMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='app_member_level' LIMIT 1); +SET @hallMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='app_task_hall' LIMIT 1); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT x.pid,3,x.tree,x.title,x.name,'','',3,'',x.permissions,'','',1,'',0,0,'',0,1,0,x.sort,'第七章操作权限',1,@now,@now FROM ( + SELECT @levelMenu pid,CONCAT('tr_',@memberRoot,' tr_',@levelMenu,' ') tree,'保存等级草稿' title,'member_level_save' name,'/memberLevel/save' permissions,10 sort UNION ALL + SELECT @levelMenu,CONCAT('tr_',@memberRoot,' tr_',@levelMenu,' '),'提交等级审批','member_level_submit','/memberLevel/submit',20 UNION ALL + SELECT @levelMenu,CONCAT('tr_',@memberRoot,' tr_',@levelMenu,' '),'发布等级规则','member_level_publish','/memberLevel/publish',30 UNION ALL + SELECT @levelMenu,CONCAT('tr_',@memberRoot,' tr_',@levelMenu,' '),'回滚等级规则','member_level_rollback','/memberLevel/rollback',40 UNION ALL + SELECT @levelMenu,CONCAT('tr_',@memberRoot,' tr_',@levelMenu,' '),'停用等级','member_level_status','/memberLevel/status',50 UNION ALL + SELECT @levelMenu,CONCAT('tr_',@memberRoot,' tr_',@levelMenu,' '),'删除等级','member_level_delete','/memberLevel/delete',60 UNION ALL + SELECT @hallMenu,CONCAT('tr_',@memberRoot,' tr_',@hallMenu,' '),'新增编辑大厅','task_hall_edit','/taskHall/edit',10 UNION ALL + SELECT @hallMenu,CONCAT('tr_',@memberRoot,' tr_',@hallMenu,' '),'发布下线大厅','task_hall_status','/taskHall/status',20 UNION ALL + SELECT @hallMenu,CONCAT('tr_',@memberRoot,' tr_',@hallMenu,' '),'删除大厅','task_hall_delete','/taskHall/delete',30 +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name`=x.name); + +INSERT IGNORE INTO `hg_admin_role_menu` (`role_id`,`menu_id`) +SELECT r.id,m.id FROM `hg_admin_role` r JOIN `hg_admin_menu` m ON m.name IN ('app_member_level','app_task_hall','member_level_save','member_level_submit','member_level_publish','member_level_rollback','member_level_status','member_level_delete','task_hall_edit','task_hall_status','task_hall_delete') WHERE r.`key` IN ('manage','business'); diff --git a/server/storage/data/migrations/20261008_007_trade_management.sql b/server/storage/data/migrations/20261008_007_trade_management.sql new file mode 100644 index 0000000..b85bcce --- /dev/null +++ b/server/storage/data/migrations/20261008_007_trade_management.sql @@ -0,0 +1,239 @@ +-- 第八章:交易订单、充值、提现与客服管理。 +-- MySQL 8.0+;金额统一使用分,资金结果通过审批与不可变台账执行。 + +CREATE TABLE IF NOT EXISTS `hg_trade_order` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `order_no` varchar(40) NOT NULL COMMENT '订单号', + `member_id` bigint unsigned NOT NULL COMMENT '会员ID', + `task_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '任务ID', + `product_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '商品ID', + `product_name` varchar(200) NOT NULL DEFAULT '' COMMENT '商品名称快照', + `order_type` tinyint NOT NULL COMMENT '订单类型', + `quantity` int unsigned NOT NULL DEFAULT 1 COMMENT '数量', + `unit_price_amount` bigint NOT NULL COMMENT '单价(分)', + `total_amount` bigint NOT NULL COMMENT '订单金额(分)', + `commission_amount` bigint NOT NULL DEFAULT 0 COMMENT '佣金(分)', + `currency` char(3) NOT NULL DEFAULT 'CNY' COMMENT '币种', + `member_level_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '下单等级ID', + `rule_snapshot` json DEFAULT NULL COMMENT '规则快照', + `message` varchar(500) NOT NULL DEFAULT '' COMMENT '订单消息', + `order_status` tinyint NOT NULL DEFAULT 1 COMMENT '订单状态', + `freeze_status` tinyint NOT NULL DEFAULT 1 COMMENT '冻结状态', + `approval_request_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '人工处理审批ID', + `matched_at` datetime(3) DEFAULT NULL COMMENT '匹配时间', + `completed_at` datetime(3) DEFAULT NULL COMMENT '完成时间', + `unfrozen_at` datetime(3) DEFAULT NULL COMMENT '解冻时间', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '下单时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_trade_order_no` (`tenant_id`,`order_no`), + KEY `idx_trade_order_member_time` (`tenant_id`,`member_id`,`created_at`,`id`), + KEY `idx_trade_order_status_time` (`tenant_id`,`order_status`,`created_at`,`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='交易_业务订单'; + +CREATE TABLE IF NOT EXISTS `hg_payment_channel` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `channel_code` varchar(32) NOT NULL COMMENT '渠道编码', + `name` varchar(100) NOT NULL COMMENT '渠道名称', + `channel_type` tinyint NOT NULL COMMENT '渠道类型', + `direction` tinyint NOT NULL COMMENT '支持方向', + `config_cipher` longtext COMMENT '渠道配置密文', + `min_amount` bigint NOT NULL DEFAULT 0 COMMENT '最小金额(分)', + `max_amount` bigint NOT NULL DEFAULT 0 COMMENT '最大金额(分)', + `fee_type` tinyint NOT NULL DEFAULT 1 COMMENT '手续费类型', + `fee_fixed_amount` bigint NOT NULL DEFAULT 0 COMMENT '固定手续费(分)', + `fee_rate` int unsigned NOT NULL DEFAULT 0 COMMENT '费率(万分比)', + `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态', + `sort` int NOT NULL DEFAULT 0 COMMENT '排序', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `deleted_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '删除者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + `deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_payment_channel_code` (`tenant_id`,`channel_code`), + KEY `idx_payment_channel_status` (`tenant_id`,`status`,`sort`), + KEY `idx_payment_channel_deleted` (`deleted_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='交易_支付渠道'; + +CREATE TABLE IF NOT EXISTS `hg_recharge_order` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `recharge_no` varchar(40) NOT NULL COMMENT '充值单号', + `member_id` bigint unsigned NOT NULL COMMENT '会员ID', + `channel_id` bigint unsigned NOT NULL COMMENT '支付渠道ID', + `request_amount` bigint NOT NULL COMMENT '申请金额(分)', + `paid_amount` bigint NOT NULL DEFAULT 0 COMMENT '实付金额(分)', + `currency` char(3) NOT NULL DEFAULT 'CNY' COMMENT '币种', + `external_no` varchar(128) NOT NULL DEFAULT '' COMMENT '外部支付单号', + `voucher_attachment_ids` json DEFAULT NULL COMMENT '打款凭证附件', + `recharge_type` tinyint NOT NULL DEFAULT 1 COMMENT '充值类型', + `recharge_status` tinyint NOT NULL DEFAULT 1 COMMENT '充值状态', + `remark` varchar(500) NOT NULL DEFAULT '' COMMENT '会员备注', + `review_reason_code` varchar(64) NOT NULL DEFAULT '' COMMENT '审核原因编码', + `review_reason` varchar(500) NOT NULL DEFAULT '' COMMENT '审核意见', + `approval_request_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '审批单ID', + `ledger_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '入账台账ID', + `paid_at` datetime(3) DEFAULT NULL COMMENT '支付时间', + `reviewed_at` datetime(3) DEFAULT NULL COMMENT '审核时间', + `credited_at` datetime(3) DEFAULT NULL COMMENT '入账时间', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_recharge_no` (`tenant_id`,`recharge_no`), + KEY `idx_recharge_external` (`tenant_id`,`external_no`), + KEY `idx_recharge_member_time` (`tenant_id`,`member_id`,`created_at`,`id`), + KEY `idx_recharge_status_time` (`tenant_id`,`recharge_status`,`created_at`,`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='交易_充值订单'; + +CREATE TABLE IF NOT EXISTS `hg_withdrawal_order` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `withdrawal_no` varchar(40) NOT NULL COMMENT '提现单号', + `member_id` bigint unsigned NOT NULL COMMENT '会员ID', + `payment_account_id` bigint unsigned NOT NULL COMMENT '收款账户ID', + `channel_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '付款渠道ID', + `request_amount` bigint NOT NULL COMMENT '申请金额(分)', + `fee_amount` bigint NOT NULL DEFAULT 0 COMMENT '手续费(分)', + `actual_amount` bigint NOT NULL COMMENT '实际到账(分)', + `currency` char(3) NOT NULL DEFAULT 'CNY' COMMENT '币种', + `account_snapshot_cipher` longtext NOT NULL COMMENT '收款账户加密快照', + `account_mask` varchar(128) NOT NULL COMMENT '收款账户脱敏快照', + `bank_name` varchar(100) NOT NULL DEFAULT '' COMMENT '银行名称快照', + `holder_mask` varchar(64) NOT NULL DEFAULT '' COMMENT '开户名脱敏快照', + `risk_result` json DEFAULT NULL COMMENT '风控结果摘要', + `withdrawal_status` tinyint NOT NULL DEFAULT 1 COMMENT '提现状态', + `review_reason_code` varchar(64) NOT NULL DEFAULT '' COMMENT '审核原因编码', + `review_reason` varchar(500) NOT NULL DEFAULT '' COMMENT '审核意见', + `approval_request_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '审批单ID', + `external_no` varchar(128) NOT NULL DEFAULT '' COMMENT '外部付款单号', + `freeze_ledger_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '冻结台账ID', + `final_ledger_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '完成或解冻台账ID', + `reviewed_at` datetime(3) DEFAULT NULL COMMENT '审核时间', + `processed_at` datetime(3) DEFAULT NULL COMMENT '处理时间', + `completed_at` datetime(3) DEFAULT NULL COMMENT '完成时间', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '发起时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_withdrawal_no` (`tenant_id`,`withdrawal_no`), + KEY `idx_withdrawal_external` (`tenant_id`,`external_no`), + KEY `idx_withdrawal_member_time` (`tenant_id`,`member_id`,`created_at`,`id`), + KEY `idx_withdrawal_status_time` (`tenant_id`,`withdrawal_status`,`created_at`,`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='交易_提现订单'; + +CREATE TABLE IF NOT EXISTS `hg_finance_review` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `approval_request_id` bigint unsigned NOT NULL COMMENT '审批单ID', + `biz_type` varchar(32) NOT NULL COMMENT '业务类型', + `biz_id` bigint unsigned NOT NULL COMMENT '业务ID', + `review_stage` tinyint NOT NULL COMMENT '审核阶段', + `reviewer_id` bigint unsigned NOT NULL COMMENT '审核人', + `decision` tinyint NOT NULL COMMENT '审核结论', + `reason_code` varchar(64) NOT NULL COMMENT '原因编码', + `reason_text` varchar(500) NOT NULL COMMENT '审核说明', + `snapshot_json` json DEFAULT NULL COMMENT '审核快照', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_finance_review_actor` (`tenant_id`,`approval_request_id`,`review_stage`,`reviewer_id`), + KEY `idx_finance_review_biz` (`tenant_id`,`biz_type`,`biz_id`,`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='交易_财务审核记录'; + +CREATE TABLE IF NOT EXISTS `hg_customer_service` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `service_code` varchar(32) NOT NULL COMMENT '客服编码', + `name` varchar(100) NOT NULL COMMENT '客服名称', + `avatar_url` varchar(1000) NOT NULL DEFAULT '' COMMENT '头像地址', + `work_time` varchar(200) NOT NULL COMMENT '工作时间说明', + `online_status` tinyint NOT NULL DEFAULT 2 COMMENT '在线状态', + `service_url` varchar(1000) NOT NULL COMMENT '客服跳转URL', + `backup_contact` varchar(500) NOT NULL DEFAULT '' COMMENT '备用联系方式', + `session_mapping` json DEFAULT NULL COMMENT '第三方会话映射', + `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态', + `sort` int NOT NULL DEFAULT 0 COMMENT '排序', + `remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `deleted_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '删除者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + `deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_customer_service_code` (`tenant_id`,`service_code`), + KEY `idx_customer_service_status` (`tenant_id`,`status`,`sort`), + KEY `idx_customer_service_deleted` (`deleted_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='交易_客服配置'; + +-- 本地默认渠道仅包含展示与费率边界,不保存任何生产密钥。 +INSERT INTO `hg_payment_channel` (`tenant_id`,`channel_code`,`name`,`channel_type`,`direction`,`min_amount`,`max_amount`,`fee_type`,`fee_fixed_amount`,`fee_rate`,`status`,`sort`,`created_at`,`updated_at`) +SELECT 0,x.channel_code,x.name,x.channel_type,3,0,0,1,0,0,1,x.sort,NOW(3),NOW(3) FROM ( + SELECT 'wechat' channel_code,'微信' name,1 channel_type,10 sort UNION ALL + SELECT 'alipay','支付宝',2,20 UNION ALL + SELECT 'bank','银行卡',3,30 UNION ALL + SELECT 'manual','人工审核',4,40 +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_payment_channel` c WHERE c.`tenant_id`=0 AND c.`channel_code`=x.channel_code); + +-- 审核原因使用 HotGo 原有数据库字典。 +INSERT INTO `hg_sys_dict_type` (`name`,`type`,`remark`,`status`,`created_at`,`updated_at`) +SELECT x.name,x.type,x.remark,1,NOW(),NOW() FROM ( + SELECT '充值驳回原因' name,'recharge_reject_reason' type,'充值审核标准原因' remark UNION ALL + SELECT '提现驳回原因','withdrawal_reject_reason','提现审核标准原因' UNION ALL + SELECT '交易异常原因','trade_exception_reason','交易人工处理标准原因' +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_sys_dict_type` d WHERE d.`type`=x.type); + +INSERT INTO `hg_sys_dict_data` (`type`,`label`,`value`,`value_type`,`list_class`,`sort`,`status`,`remark`,`created_at`,`updated_at`) +SELECT x.type,x.label,x.value,'string',x.list_class,x.sort,1,x.remark,NOW(),NOW() FROM ( + SELECT 'recharge_reject_reason' type,'凭证不清晰' label,'voucher_unclear' value,'warning' list_class,10 sort,'充值审核原因' remark UNION ALL + SELECT 'recharge_reject_reason','金额不一致','amount_mismatch','error',20,'充值审核原因' UNION ALL + SELECT 'recharge_reject_reason','重复订单','duplicate_order','error',30,'充值审核原因' UNION ALL + SELECT 'withdrawal_reject_reason','账户信息异常','account_invalid','error',10,'提现审核原因' UNION ALL + SELECT 'withdrawal_reject_reason','风控拦截','risk_rejected','error',20,'提现审核原因' UNION ALL + SELECT 'withdrawal_reject_reason','余额状态异常','balance_invalid','warning',30,'提现审核原因' UNION ALL + SELECT 'trade_exception_reason','匹配超时','match_timeout','warning',10,'交易异常原因' UNION ALL + SELECT 'trade_exception_reason','风控解冻','risk_unfreeze','primary',20,'交易异常原因' UNION ALL + SELECT 'trade_exception_reason','人工重匹配','manual_rematch','primary',30,'交易异常原因' +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_sys_dict_data` d WHERE d.`type`=x.type AND d.`value`=x.value); + +-- 交易管理菜单与接口权限。 +SET @now=NOW(); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT 0,1,'','交易管理','trade_management','/trade','TransactionOutlined',1,'','','','LAYOUT',1,'',1,0,'',0,0,0,50,'订单、充值、提现与客服治理',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='trade_management'); +SET @tradeRoot=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='trade_management' LIMIT 1); + +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT @tradeRoot,2,CONCAT('tr_',@tradeRoot,' '),x.title,x.name,x.path,x.icon,2,'',x.permissions,'',x.component,1,'',0,0,'',1,0,0,x.sort,x.remark,1,@now,@now FROM ( + SELECT '订单列表' title,'trade_order' name,'order' path,'FileTextOutlined' icon,'/tradeOrder/list,/tradeOrder/view' permissions,'/trade/order/index' component,10 sort,'交易订单查询与异常处理' remark UNION ALL + SELECT '充值管理','trade_recharge','recharge','PayCircleOutlined','/rechargeOrder/list,/rechargeOrder/summary,/rechargeOrder/view','/trade/recharge/index',20,'充值凭证与入账审核' UNION ALL + SELECT '提现管理','trade_withdrawal','withdrawal','BankOutlined','/withdrawalOrder/list,/withdrawalOrder/view','/trade/withdrawal/index',30,'提现脱敏审核与付款结果' UNION ALL + SELECT '客服管理','trade_customer_service','customer-service','CustomerServiceOutlined','/customerService/list,/customerService/view','/trade/customer-service/index',40,'客服入口与降级联系方式' +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name`=x.name); + +SET @orderMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='trade_order' LIMIT 1); +SET @rechargeMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='trade_recharge' LIMIT 1); +SET @withdrawalMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='trade_withdrawal' LIMIT 1); +SET @serviceMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='trade_customer_service' LIMIT 1); + +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT x.pid,3,x.tree,x.title,x.name,'','',3,'',x.permissions,'','',1,'',0,0,'',0,1,0,x.sort,'交易管理操作权限',1,@now,@now FROM ( + SELECT @orderMenu pid,CONCAT('tr_',@tradeRoot,' tr_',@orderMenu,' ') tree,'提交订单处理' title,'trade_order_apply' name,'/tradeOrder/apply' permissions,10 sort UNION ALL + SELECT @orderMenu,CONCAT('tr_',@tradeRoot,' tr_',@orderMenu,' '),'执行订单处理','trade_order_execute','/tradeOrder/execute',20 UNION ALL + SELECT @rechargeMenu,CONCAT('tr_',@tradeRoot,' tr_',@rechargeMenu,' '),'提交充值审核','trade_recharge_review','/rechargeOrder/review',10 UNION ALL + SELECT @rechargeMenu,CONCAT('tr_',@tradeRoot,' tr_',@rechargeMenu,' '),'执行充值审核','trade_recharge_execute','/rechargeOrder/execute',20 UNION ALL + SELECT @withdrawalMenu,CONCAT('tr_',@tradeRoot,' tr_',@withdrawalMenu,' '),'提交提现审核','trade_withdrawal_review','/withdrawalOrder/review',10 UNION ALL + SELECT @withdrawalMenu,CONCAT('tr_',@tradeRoot,' tr_',@withdrawalMenu,' '),'执行提现审核','trade_withdrawal_execute','/withdrawalOrder/execute',20 UNION ALL + SELECT @withdrawalMenu,CONCAT('tr_',@tradeRoot,' tr_',@withdrawalMenu,' '),'登记付款结果','trade_withdrawal_complete','/withdrawalOrder/complete',30 UNION ALL + SELECT @serviceMenu,CONCAT('tr_',@tradeRoot,' tr_',@serviceMenu,' '),'新增编辑客服','trade_customer_service_edit','/customerService/edit',10 UNION ALL + SELECT @serviceMenu,CONCAT('tr_',@tradeRoot,' tr_',@serviceMenu,' '),'客服状态','trade_customer_service_status','/customerService/status',20 UNION ALL + SELECT @serviceMenu,CONCAT('tr_',@tradeRoot,' tr_',@serviceMenu,' '),'删除客服','trade_customer_service_delete','/customerService/delete',30 +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name`=x.name); diff --git a/server/storage/data/migrations/20261008_008_product_task_management.sql b/server/storage/data/migrations/20261008_008_product_task_management.sql new file mode 100644 index 0000000..fc821d3 --- /dev/null +++ b/server/storage/data/migrations/20261008_008_product_task_management.sql @@ -0,0 +1,147 @@ +-- 第九章:商品、任务与会员任务审核。 +-- 金额统一使用分;比例统一使用万分比;佣金结算写入不可变钱包台账。 + +CREATE TABLE IF NOT EXISTS `hg_product_category` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `pid` bigint unsigned NOT NULL DEFAULT 0 COMMENT '上级ID', + `level` int unsigned NOT NULL DEFAULT 1 COMMENT '树等级', + `tree` varchar(512) NOT NULL DEFAULT '' COMMENT '关系树', + `category_code` varchar(32) NOT NULL COMMENT '分类编码', + `name` varchar(100) NOT NULL COMMENT '分类名称', + `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态', + `sort` int NOT NULL DEFAULT 0 COMMENT '排序', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `deleted_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '删除者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + `deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_product_category_code` (`tenant_id`,`category_code`), + KEY `idx_product_category_status` (`tenant_id`,`status`,`sort`,`id`), + KEY `idx_product_category_deleted` (`deleted_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='商城_商品分类'; + +CREATE TABLE IF NOT EXISTS `hg_task` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `task_no` varchar(32) NOT NULL COMMENT '任务编号', + `hall_id` bigint unsigned NOT NULL COMMENT '任务大厅ID', + `title` varchar(200) NOT NULL COMMENT '标题', + `description` varchar(1000) NOT NULL DEFAULT '' COMMENT '描述', + `detail_html` longtext COMMENT '清洗后的任务详情', + `cover_attachment_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '封面附件ID', + `cover_url` varchar(1000) NOT NULL DEFAULT '' COMMENT '封面地址', + `commission_amount` bigint NOT NULL DEFAULT 0 COMMENT '固定佣金(分)', + `commission_rate` int unsigned NOT NULL DEFAULT 0 COMMENT '佣金万分比', + `daily_limit` int unsigned NOT NULL DEFAULT 0 COMMENT '每日总量', + `per_member_limit` int unsigned NOT NULL DEFAULT 1 COMMENT '单会员限制', + `start_at` datetime(3) DEFAULT NULL COMMENT '开始时间', + `end_at` datetime(3) DEFAULT NULL COMMENT '结束时间', + `publish_status` tinyint NOT NULL DEFAULT 1 COMMENT '发布状态', + `sort` int NOT NULL DEFAULT 0 COMMENT '排序', + `version` int unsigned NOT NULL DEFAULT 0 COMMENT '乐观锁', + `remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `deleted_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '删除者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + `deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_task_no` (`tenant_id`,`task_no`), + KEY `idx_task_hall_status` (`tenant_id`,`hall_id`,`publish_status`,`sort`,`id`), + KEY `idx_task_period` (`tenant_id`,`start_at`,`end_at`), + KEY `idx_task_deleted` (`deleted_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='任务_任务定义'; + +CREATE TABLE IF NOT EXISTS `hg_task_level` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `task_id` bigint unsigned NOT NULL COMMENT '任务ID', + `level_id` bigint unsigned NOT NULL COMMENT '会员等级ID', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_task_level` (`tenant_id`,`task_id`,`level_id`), + KEY `idx_task_level_level` (`tenant_id`,`level_id`,`task_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='任务_可用会员等级'; + +CREATE TABLE IF NOT EXISTS `hg_task_submission` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `tenant_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '租户ID', + `submission_no` varchar(32) NOT NULL COMMENT '提交编号', + `trade_order_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '交易订单ID', + `task_id` bigint unsigned NOT NULL COMMENT '任务ID', + `member_id` bigint unsigned NOT NULL COMMENT '会员ID', + `member_level_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '提交时等级ID', + `evidence_text` varchar(2000) NOT NULL DEFAULT '' COMMENT '证据说明', + `evidence_attachment_ids` json DEFAULT NULL COMMENT '证据附件', + `submission_status` tinyint NOT NULL DEFAULT 1 COMMENT '1待审 2通过 3驳回 4已结算 5已冲正', + `commission_amount` bigint NOT NULL DEFAULT 0 COMMENT '佣金快照(分)', + `success_rate` int unsigned NOT NULL DEFAULT 0 COMMENT '成功率万分比', + `reviewed_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '审核人', + `reviewed_at` datetime(3) DEFAULT NULL COMMENT '审核时间', + `review_reason_code` varchar(64) NOT NULL DEFAULT '' COMMENT '标准原因', + `review_reason` varchar(500) NOT NULL DEFAULT '' COMMENT '审核意见', + `allow_resubmit` tinyint NOT NULL DEFAULT 2 COMMENT '是否允许重提', + `ledger_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '佣金台账ID', + `settled_at` datetime(3) DEFAULT NULL COMMENT '结算时间', + `reversal_approval_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '冲正审批ID', + `created_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建者', + `updated_by` bigint unsigned NOT NULL DEFAULT 0 COMMENT '更新者', + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_task_submission_no` (`submission_no`), + UNIQUE KEY `uk_task_submission_order` (`trade_order_id`), + KEY `idx_task_submission_member` (`tenant_id`,`member_id`,`created_at`,`id`), + KEY `idx_task_submission_status` (`tenant_id`,`submission_status`,`created_at`,`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='任务_会员任务提交'; + +INSERT INTO `hg_product_category` (`tenant_id`,`category_code`,`name`,`status`,`sort`) +SELECT 0,'DEFAULT','默认分类',1,10 +WHERE NOT EXISTS (SELECT 1 FROM `hg_product_category` WHERE `tenant_id`=0 AND `category_code`='DEFAULT'); + +INSERT INTO `hg_sys_dict_type` (`name`,`type`,`remark`,`status`,`created_at`,`updated_at`) +SELECT '任务审核驳回原因','task_reject_reason','第九章会员任务审核',1,NOW(),NOW() +WHERE NOT EXISTS (SELECT 1 FROM `hg_sys_dict_type` WHERE `type`='task_reject_reason'); +INSERT INTO `hg_sys_dict_data` (`type`,`label`,`value`,`value_type`,`list_class`,`sort`,`status`,`remark`,`created_at`,`updated_at`) +SELECT 'task_reject_reason',x.label,x.value,'string','error',x.sort,1,'任务审核驳回原因',NOW(),NOW() +FROM ( + SELECT '证据不完整' label,'evidence_incomplete' value,10 sort UNION ALL + SELECT '证据不符合要求','evidence_invalid',20 UNION ALL + SELECT '重复提交','duplicate_submission',30 UNION ALL + SELECT '任务已失效','task_expired',40 UNION ALL + SELECT '其他','other',90 +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_sys_dict_data` d WHERE d.`type`='task_reject_reason' AND d.`value`=x.value); + +SET @now=NOW(); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT 0,1,'', '商品与任务','product_task','/product-task','AppstoreOutlined',1,'/product-task/product','','','LAYOUT',1,'',1,0,'',0,0,0,45,'第九章商品任务管理',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='product_task'); +UPDATE `hg_admin_menu` SET `component`='LAYOUT', `keep_alive`=0 WHERE `name`='product_task'; +SET @root=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='product_task' LIMIT 1); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT @root,2,CONCAT('tr_',@root,' '),x.title,x.name,x.path,x.icon,2,'',x.permissions,'',x.component,1,'',0,0,'',1,0,0,x.sort,x.remark,1,@now,@now FROM ( + SELECT '商品列表' title,'product_list' name,'product' path,'ShoppingOutlined' icon,'/product/list,/product/view' permissions,'/product-task/product/index' component,10 sort,'商品维护' remark UNION ALL + SELECT '任务列表','task_list','task','ProfileOutlined','/task/list,/task/view','/product-task/task/index',20,'任务维护' UNION ALL + SELECT '会员任务审核','task_submission_list','submission','AuditOutlined','/taskSubmission/list,/taskSubmission/view','/product-task/submission/index',30,'会员任务提交审核' +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name`=x.name); +SET @productMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='product_list' LIMIT 1); +SET @taskMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='task_list' LIMIT 1); +SET @submissionMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='task_submission_list' LIMIT 1); +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT x.pid,3,x.tree,x.title,x.name,'','',3,'',x.permissions,'','',1,'',0,0,'',0,1,0,x.sort,'第九章操作权限',1,@now,@now FROM ( + SELECT @productMenu pid,CONCAT('tr_',@root,' tr_',@productMenu,' ') tree,'新增编辑商品' title,'product_edit' name,'/product/edit' permissions,10 sort UNION ALL + SELECT @productMenu,CONCAT('tr_',@root,' tr_',@productMenu,' '),'商品状态','product_status','/product/status',20 UNION ALL + SELECT @productMenu,CONCAT('tr_',@root,' tr_',@productMenu,' '),'商品推荐','product_recommend','/product/recommend',30 UNION ALL + SELECT @productMenu,CONCAT('tr_',@root,' tr_',@productMenu,' '),'删除商品','product_delete','/product/delete',40 UNION ALL + SELECT @taskMenu,CONCAT('tr_',@root,' tr_',@taskMenu,' '),'新增编辑任务','task_edit','/task/edit',10 UNION ALL + SELECT @taskMenu,CONCAT('tr_',@root,' tr_',@taskMenu,' '),'任务状态','task_status','/task/status',20 UNION ALL + SELECT @taskMenu,CONCAT('tr_',@root,' tr_',@taskMenu,' '),'删除任务','task_delete','/task/delete',30 UNION ALL + SELECT @submissionMenu,CONCAT('tr_',@root,' tr_',@submissionMenu,' '),'审核任务','task_submission_review','/taskSubmission/review',10 +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name`=x.name); + +INSERT IGNORE INTO `hg_admin_role_menu` (`role_id`,`menu_id`) +SELECT r.id,m.id FROM `hg_admin_role` r JOIN `hg_admin_menu` m ON m.name IN ('product_task','product_list','task_list','task_submission_list','product_edit','product_status','product_recommend','product_delete','task_edit','task_status','task_delete','task_submission_review') WHERE r.`key` IN ('manage','business'); diff --git a/server/storage/data/migrations/20261008_009_member_menu_alignment.sql b/server/storage/data/migrations/20261008_009_member_menu_alignment.sql new file mode 100644 index 0000000..bc584e7 --- /dev/null +++ b/server/storage/data/migrations/20261008_009_member_menu_alignment.sql @@ -0,0 +1,28 @@ +-- 对齐原型中的会员管理菜单:一级菜单位于主页之后,原型入口优先展示。 +SET @now=NOW(); +SET @memberRoot=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='app_member' LIMIT 1); + +UPDATE `hg_admin_menu` +SET `sort`=15, `updated_at`=@now +WHERE `id`=@memberRoot; + +UPDATE `hg_admin_menu` +SET + `sort`=CASE `name` + WHEN 'app_member_list' THEN 10 + WHEN 'app_member_level' THEN 20 + WHEN 'app_task_hall' THEN 30 + WHEN 'app_member_wallet' THEN 40 + WHEN 'app_member_notice' THEN 50 + ELSE `sort` + END, + `hidden`=0, + `updated_at`=@now +WHERE `pid`=@memberRoot + AND `name` IN ( + 'app_member_list', + 'app_member_level', + 'app_task_hall', + 'app_member_wallet', + 'app_member_notice' + ); diff --git a/server/storage/data/migrations/20261009_001_remove_governance_menu.sql b/server/storage/data/migrations/20261009_001_remove_governance_menu.sql new file mode 100644 index 0000000..bf12d87 --- /dev/null +++ b/server/storage/data/migrations/20261009_001_remove_governance_menu.sql @@ -0,0 +1,9 @@ +-- 对齐原型菜单:审批和审计保留为内部能力,不在后台导航中单独展示。 +SET @now = NOW(); + +UPDATE `hg_admin_menu` +SET `hidden` = 1, + `status` = 2, + `updated_at` = @now +WHERE `name` IN ('governance', 'governance_approval', 'governance_biz_audit') + OR `tree` LIKE CONCAT('%tr_', (SELECT `id` FROM (SELECT `id` FROM `hg_admin_menu` WHERE `name` = 'governance' LIMIT 1) AS governance_menu), ' %'); diff --git a/server/storage/data/migrations/20261009_002_delete_governance_menu.sql b/server/storage/data/migrations/20261009_002_delete_governance_menu.sql new file mode 100644 index 0000000..2aaf513 --- /dev/null +++ b/server/storage/data/migrations/20261009_002_delete_governance_menu.sql @@ -0,0 +1,12 @@ +-- 原型没有独立治理菜单,移除对应菜单和角色关联;业务内部日志表继续保留。 +SET @governanceId = (SELECT `id` FROM `hg_admin_menu` WHERE `name` = 'governance' LIMIT 1); + +DELETE role_menu +FROM `hg_admin_role_menu` AS role_menu +INNER JOIN `hg_admin_menu` AS menu ON menu.`id` = role_menu.`menu_id` +WHERE menu.`id` = @governanceId + OR menu.`tree` LIKE CONCAT('%tr_', @governanceId, ' %'); + +DELETE FROM `hg_admin_menu` +WHERE `id` = @governanceId + OR `tree` LIKE CONCAT('%tr_', @governanceId, ' %'); diff --git a/server/storage/data/migrations/20261009_003_role_menu_parent_scope.sql b/server/storage/data/migrations/20261009_003_role_menu_parent_scope.sql new file mode 100644 index 0000000..f7393fd --- /dev/null +++ b/server/storage/data/migrations/20261009_003_role_menu_parent_scope.sql @@ -0,0 +1,10 @@ +-- 清理历史上超出直接父角色范围的菜单授权;父角色为超级管理员时不限制。 +DELETE child_menu +FROM `hg_admin_role_menu` AS child_menu +INNER JOIN `hg_admin_role` AS child_role ON child_role.`id` = child_menu.`role_id` +INNER JOIN `hg_admin_role` AS parent_role ON parent_role.`id` = child_role.`pid` +LEFT JOIN `hg_admin_role_menu` AS parent_menu + ON parent_menu.`role_id` = parent_role.`id` + AND parent_menu.`menu_id` = child_menu.`menu_id` +WHERE parent_role.`key` <> 'super' + AND parent_menu.`menu_id` IS NULL; diff --git a/server/storage/data/migrations/20261009_010_member_operation_alignment.sql b/server/storage/data/migrations/20261009_010_member_operation_alignment.sql new file mode 100644 index 0000000..3b868fc --- /dev/null +++ b/server/storage/data/migrations/20261009_010_member_operation_alignment.sql @@ -0,0 +1,14 @@ +-- 对齐会员列表操作栏:补充账变流水查询和真人/假人切换权限。 +SET @now=NOW(); +SET @memberRoot=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='app_member' LIMIT 1); +SET @memberMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='app_member_list' LIMIT 1); + +INSERT INTO `hg_admin_menu` (`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`,`created_at`,`updated_at`) +SELECT @memberMenu,3,CONCAT('tr_',@memberRoot,' tr_',@memberMenu,' '),x.title,x.name,'','',3,'',x.permissions,'','',1,'',0,0,'',0,1,0,x.sort,'会员列表操作权限',1,@now,@now FROM ( + SELECT '查看账变流水' title,'app_member_ledger' name,'/appMember/ledgerList' permissions,75 sort UNION ALL + SELECT '切换真人假人','app_member_category','/appMember/category',76 +) x WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name`=x.name); + +INSERT IGNORE INTO `hg_admin_role_menu` (`role_id`,`menu_id`) +SELECT r.id,m.id FROM `hg_admin_role` r JOIN `hg_admin_menu` m ON m.name IN ('app_member_ledger','app_member_category') +WHERE r.`key` IN ('manage','business'); diff --git a/server/storage/data/migrations/20261009_010_menu_structure_alignment.sql b/server/storage/data/migrations/20261009_010_menu_structure_alignment.sql new file mode 100644 index 0000000..6112df8 --- /dev/null +++ b/server/storage/data/migrations/20261009_010_menu_structure_alignment.sql @@ -0,0 +1,54 @@ +-- 调整业务一级菜单及商品、任务菜单归属。 +-- 顺序:会员管理 -> 交易管理 -> 商品管理 -> 任务管理。 + +SET @now=NOW(); +SET @memberRoot=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='app_member' LIMIT 1); +SET @tradeRoot=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='trade_management' LIMIT 1); +SET @productRoot=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='product_task' LIMIT 1); +SET @productMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='product_list' LIMIT 1); +SET @taskMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='task_list' LIMIT 1); +SET @submissionMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='task_submission_list' LIMIT 1); + +UPDATE `hg_admin_menu` SET `sort`=15,`updated_at`=@now WHERE `id`=@memberRoot; +UPDATE `hg_admin_menu` SET `sort`=16,`updated_at`=@now WHERE `id`=@tradeRoot; +UPDATE `hg_admin_menu` +SET `title`='商品管理',`sort`=17,`redirect`='/product-task/product',`remark`='商品维护',`updated_at`=@now +WHERE `id`=@productRoot; + +INSERT INTO `hg_admin_menu` +(`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`,`created_at`,`updated_at`) +SELECT 0,1,'','任务管理','task_management','/task-management','ProfileOutlined',1,'/task-management/task','','','LAYOUT',1,'',1,0,'',0,0,0,18,'任务配置与会员任务审核',1,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='task_management'); + +SET @taskRoot=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='task_management' LIMIT 1); + +UPDATE `hg_admin_menu` +SET `title`='任务管理',`path`='/task-management',`component`='LAYOUT',`redirect`='/task-management/task', + `sort`=18,`hidden`=0,`status`=1,`updated_at`=@now +WHERE `id`=@taskRoot; + +UPDATE `hg_admin_menu` +SET `pid`=@productRoot,`level`=2,`tree`=CONCAT('tr_',@productRoot,' '),`sort`=10,`hidden`=0,`updated_at`=@now +WHERE `id`=@productMenu; + +UPDATE `hg_admin_menu` +SET `pid`=@taskRoot,`level`=2,`tree`=CONCAT('tr_',@taskRoot,' '),`sort`=10,`hidden`=0,`updated_at`=@now +WHERE `id`=@taskMenu; + +UPDATE `hg_admin_menu` +SET `pid`=@taskRoot,`level`=2,`tree`=CONCAT('tr_',@taskRoot,' '),`sort`=20,`hidden`=0,`updated_at`=@now +WHERE `id`=@submissionMenu; + +UPDATE `hg_admin_menu` +SET `level`=3,`tree`=CONCAT('tr_',@taskRoot,' tr_',@taskMenu,' '),`updated_at`=@now +WHERE `pid`=@taskMenu; + +UPDATE `hg_admin_menu` +SET `level`=3,`tree`=CONCAT('tr_',@taskRoot,' tr_',@submissionMenu,' '),`updated_at`=@now +WHERE `pid`=@submissionMenu; + +-- 原来拥有商品任务菜单的角色继续拥有新的任务管理一级菜单。 +INSERT IGNORE INTO `hg_admin_role_menu` (`role_id`,`menu_id`) +SELECT DISTINCT rm.`role_id`,@taskRoot +FROM `hg_admin_role_menu` rm +WHERE rm.`menu_id` IN (@productRoot,@taskMenu,@submissionMenu); diff --git a/server/storage/data/migrations/20261009_011_trade_order_match_menu.sql b/server/storage/data/migrations/20261009_011_trade_order_match_menu.sql new file mode 100644 index 0000000..b7d1328 --- /dev/null +++ b/server/storage/data/migrations/20261009_011_trade_order_match_menu.sql @@ -0,0 +1,17 @@ +-- 订单人工匹配权限,复用现有交易管理菜单。 +SET @now=NOW(); +SET @tradeRoot=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='trade_management' LIMIT 1); +SET @orderMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='trade_order' LIMIT 1); + +INSERT INTO `hg_admin_menu` +(`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`,`created_at`,`updated_at`) +SELECT @orderMenu,3,CONCAT('tr_',@tradeRoot,' tr_',@orderMenu,' '),'匹配订单','trade_order_match','','',3,'','/tradeOrder/match,/tradeOrder/matchProducts','','',1,'',0,0,'',0,1,0,5,'订单人工选品匹配权限',1,@now,@now +WHERE @orderMenu IS NOT NULL AND NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name`='trade_order_match'); + +SET @matchMenu=(SELECT `id` FROM `hg_admin_menu` WHERE `name`='trade_order_match' LIMIT 1); + +-- 原来拥有订单列表的角色自动继承匹配订单权限。 +INSERT IGNORE INTO `hg_admin_role_menu` (`role_id`,`menu_id`) +SELECT DISTINCT rm.`role_id`,@matchMenu +FROM `hg_admin_role_menu` rm +WHERE rm.`menu_id`=@orderMenu AND @matchMenu IS NOT NULL; diff --git a/server/storage/data/migrations/20261009_012_show_personal_center_menu.sql b/server/storage/data/migrations/20261009_012_show_personal_center_menu.sql new file mode 100644 index 0000000..17d5794 --- /dev/null +++ b/server/storage/data/migrations/20261009_012_show_personal_center_menu.sql @@ -0,0 +1,9 @@ +-- HotGo 默认将个人中心设为隐藏路由,只能从右上角头像进入。 +-- 本项目需要在「系统应用」下直接展示该菜单,因此取消隐藏;个人设置仍作为其子菜单。 +UPDATE `hg_admin_menu` +SET `hidden` = 0, + `always_show` = 1, + `updated_at` = NOW() +WHERE `name` = 'home' + AND `title` = '个人中心' + AND `pid` > 0; diff --git a/server/storage/data/migrations/20261009_013_hide_member_auxiliary_menus.sql b/server/storage/data/migrations/20261009_013_hide_member_auxiliary_menus.sql new file mode 100644 index 0000000..70aa80e --- /dev/null +++ b/server/storage/data/migrations/20261009_013_hide_member_auxiliary_menus.sql @@ -0,0 +1,22 @@ +-- 会员管理按原型仅保留会员列表、会员等级和任务大厅。 +-- 资金调账、会员通知的业务代码、数据表及按钮权限继续保留,供会员列表操作栏使用。 +UPDATE `hg_admin_menu` +SET `hidden` = 1, + `status` = 2, + `updated_at` = NOW() +WHERE `name` IN ( + 'app_member_wallet', + 'app_member_notice' +); + +-- 按钮权限本身不生成菜单入口,保持启用,避免会员列表中的账变等操作被一并移除。 +UPDATE `hg_admin_menu` +SET `hidden` = 1, + `status` = 1, + `updated_at` = NOW() +WHERE `name` IN ( + 'app_member_wallet_request', + 'app_member_wallet_execute', + 'app_member_notice_edit', + 'app_member_notice_revoke' +); diff --git a/server/storage/data/migrations/20261009_014_order_matching_demo.sql b/server/storage/data/migrations/20261009_014_order_matching_demo.sql new file mode 100644 index 0000000..da26c2d --- /dev/null +++ b/server/storage/data/migrations/20261009_014_order_matching_demo.sql @@ -0,0 +1,19 @@ +-- 保留一条可用于验收“匹配订单”操作的演示订单。 +-- 仅调整固定演示单号,不影响真实业务订单。 +UPDATE `hg_trade_order` +SET + `product_id` = 0, + `product_name` = '', + `order_type` = 3, + `quantity` = 1, + `unit_price_amount` = 0, + `total_amount` = 0, + `commission_amount` = 0, + `message` = '等待后台匹配商品', + `order_status` = 1, + `freeze_status` = 1, + `approval_request_id` = 0, + `matched_at` = NULL, + `completed_at` = NULL, + `unfrozen_at` = NULL +WHERE `order_no` = 'DEMO-ORD-01'; diff --git a/server/storage/data/migrations/20261010_001_system_submenu_icons.sql b/server/storage/data/migrations/20261010_001_system_submenu_icons.sql new file mode 100644 index 0000000..5e5af56 --- /dev/null +++ b/server/storage/data/migrations/20261010_001_system_submenu_icons.sql @@ -0,0 +1,37 @@ +-- 为 HotGo 原生后台的常用二级菜单补充图标。 +-- 图标名称来自前端 @vicons/antd,由动态路由统一渲染。 +UPDATE `hg_admin_menu` +SET `icon` = CASE `name` + WHEN 'user' THEN 'UserOutlined' + WHEN 'org_dept' THEN 'ApartmentOutlined' + WHEN 'org_post' THEN 'IdcardOutlined' + WHEN 'permission_menu' THEN 'MenuOutlined' + WHEN 'permission_role' THEN 'SafetyCertificateOutlined' + WHEN 'Logs' THEN 'FileTextOutlined' + WHEN 'asset' THEN 'AccountBookOutlined' + WHEN 'apply_provinces' THEN 'EnvironmentOutlined' + WHEN 'apply_attachment' THEN 'PaperClipOutlined' + WHEN 'apply_notice' THEN 'NotificationOutlined' + WHEN 'system_config' THEN 'SettingOutlined' + WHEN 'system_dict' THEN 'BookOutlined' + WHEN 'system_cron' THEN 'ScheduleOutlined' + WHEN 'system_blacklist' THEN 'StopOutlined' + ELSE `icon` +END, +`updated_at` = NOW() +WHERE `name` IN ( + 'user', + 'org_dept', + 'org_post', + 'permission_menu', + 'permission_role', + 'Logs', + 'asset', + 'apply_provinces', + 'apply_attachment', + 'apply_notice', + 'system_config', + 'system_dict', + 'system_cron', + 'system_blacklist' +); diff --git a/server/storage/data/migrations/20261010_002_product_upload_permission.sql b/server/storage/data/migrations/20261010_002_product_upload_permission.sql new file mode 100644 index 0000000..62609f3 --- /dev/null +++ b/server/storage/data/migrations/20261010_002_product_upload_permission.sql @@ -0,0 +1,34 @@ +-- 商品编辑页依赖统一附件上传接口。 +-- 已拥有商品编辑权限的角色,必须同时获得 /upload/file,否则新增和更换商品图片会被鉴权拦截。 +INSERT IGNORE INTO `hg_admin_role_menu` (`role_id`, `menu_id`) +SELECT DISTINCT product_role.`role_id`, upload_menu.`id` +FROM `hg_admin_role_menu` AS product_role +INNER JOIN `hg_admin_menu` AS product_menu + ON product_menu.`id` = product_role.`menu_id` +INNER JOIN `hg_admin_menu` AS upload_menu + ON upload_menu.`permissions` = '/upload/file' +WHERE product_menu.`permissions` = '/product/edit' + AND product_menu.`status` = 1 + AND upload_menu.`status` = 1; + +-- HotGo 的 Casbin 策略持久化在独立表中,同步补齐已有角色的运行时策略。 +INSERT INTO `hg_admin_role_casbin` (`p_type`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) +SELECT 'p', role_row.`key`, '/upload/file', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', '' +FROM `hg_admin_role` AS role_row +WHERE role_row.`status` = 1 + AND EXISTS ( + SELECT 1 + FROM `hg_admin_role_menu` AS role_menu + INNER JOIN `hg_admin_menu` AS menu_row ON menu_row.`id` = role_menu.`menu_id` + WHERE role_menu.`role_id` = role_row.`id` + AND menu_row.`permissions` = '/product/edit' + AND menu_row.`status` = 1 + ) + AND NOT EXISTS ( + SELECT 1 + FROM `hg_admin_role_casbin` AS policy + WHERE policy.`p_type` = 'p' + AND policy.`v0` = role_row.`key` + AND policy.`v1` = '/upload/file' + AND policy.`v2` = 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD' + ); diff --git a/server/storage/data/seeds/20261008_business_demo_data.sql b/server/storage/data/seeds/20261008_business_demo_data.sql new file mode 100644 index 0000000..aa840eb --- /dev/null +++ b/server/storage/data/seeds/20261008_business_demo_data.sql @@ -0,0 +1,518 @@ +-- Olons Admin 业务演示数据 +-- 适用:MySQL 8.0+,本地开发环境。 +-- 特征:所有业务编号使用 DEMO 前缀;脚本可重复执行,不覆盖用户已有数据。 + +SET NAMES utf8mb4; +SET @tenant_id = 0; +SET @admin_id = COALESCE((SELECT id FROM hg_admin_member ORDER BY id LIMIT 1), 1); +SET @reviewer_id = COALESCE((SELECT id FROM hg_admin_member WHERE id <> @admin_id ORDER BY id LIMIT 1), @admin_id); +SET @now = NOW(3); + +-- -------------------------------------------------------------------------- +-- 1. 基础治理:审批、审批动作、敏感查看、审计、幂等、Outbox、看板汇总 +-- -------------------------------------------------------------------------- + +INSERT INTO hg_approval_request +(`tenant_id`,`approval_no`,`approval_type`,`target_type`,`target_id`,`action`,`title`,`payload_json`,`diff_json`,`risk_level`,`required_approvals`,`approval_status`,`applicant_id`,`submitted_at`,`decided_at`,`executed_at`,`expire_at`,`version`,`remark`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id, CONCAT('DEMO-AP-', LPAD(x.status,2,'0')), 'demo_flow', 'demo_target', x.status, + 'demo_action', CONCAT('演示审批状态-',x.status), JSON_OBJECT('demo',TRUE,'status',x.status), + JSON_OBJECT('status',JSON_OBJECT('before',1,'after',x.status)), x.risk_level, 2, x.status, + @admin_id, + IF(x.status=1,NULL,DATE_SUB(@now,INTERVAL x.status HOUR)), + IF(x.status IN (4,5,6,7,8),DATE_SUB(@now,INTERVAL 20 MINUTE),NULL), + IF(x.status IN (7,8),DATE_SUB(@now,INTERVAL 10 MINUTE),NULL), + DATE_ADD(@now,INTERVAL 7 DAY), x.status-1, CONCAT('本地演示:审批状态 ',x.status), + @admin_id,@admin_id,DATE_SUB(@now,INTERVAL x.status DAY),@now +FROM ( + SELECT 1 status,1 risk_level UNION ALL SELECT 2,2 UNION ALL SELECT 3,3 UNION ALL SELECT 4,4 + UNION ALL SELECT 5,1 UNION ALL SELECT 6,2 UNION ALL SELECT 7,3 UNION ALL SELECT 8,4 +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_approval_request a WHERE a.approval_no=CONCAT('DEMO-AP-',LPAD(x.status,2,'0'))); + +INSERT INTO hg_approval_action +(`tenant_id`,`approval_request_id`,`step_no`,`actor_id`,`action`,`reason_code`,`comment`,`snapshot_json`,`actor_ip_cipher`,`mfa_verified`,`created_at`) +SELECT @tenant_id,a.id,x.action,@reviewer_id,x.action,CONCAT('demo_action_',x.action), + CONCAT('本地演示审批动作 ',x.action),JSON_OBJECT('approvalNo',a.approval_no,'action',x.action), + 'DEMO_IP_CIPHER',MOD(x.action,2),DATE_SUB(@now,INTERVAL (7-x.action) HOUR) +FROM ( + SELECT 1 action UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 +) x +JOIN hg_approval_request a ON a.approval_no=CONCAT('DEMO-AP-',LPAD(x.action+1,2,'0')) +WHERE NOT EXISTS ( + SELECT 1 FROM hg_approval_action aa + WHERE aa.approval_request_id=a.id AND aa.step_no=x.action AND aa.actor_id=@reviewer_id +); + +INSERT INTO hg_sensitive_access_log +(`tenant_id`,`access_no`,`actor_id`,`target_type`,`target_id`,`field_set`,`purpose_code`,`purpose_text`,`authorization_no`,`mfa_verified`,`result`,`trace_id`,`created_at`) +SELECT @tenant_id,CONCAT('DEMO-SA-',x.result),@admin_id,'app_member',x.result, + JSON_ARRAY('mobile','realName','idNo'),CONCAT('demo_purpose_',x.result), + IF(x.result=1,'客服核验会员身份','无授权查看被拒绝'),CONCAT('DEMO-AUTH-',x.result),x.result-1,x.result, + CONCAT('demo-trace-sensitive-',x.result),DATE_SUB(@now,INTERVAL x.result HOUR) +FROM (SELECT 1 result UNION ALL SELECT 2) x +WHERE NOT EXISTS (SELECT 1 FROM hg_sensitive_access_log l WHERE l.access_no=CONCAT('DEMO-SA-',x.result)); + +INSERT INTO hg_biz_audit_log +(`tenant_id`,`audit_no`,`actor_type`,`actor_id`,`module`,`action`,`target_type`,`target_id`,`before_digest`,`after_digest`,`change_json`,`reason`,`approval_no`,`trace_id`,`prev_hash`,`row_hash`,`created_at`) +SELECT @tenant_id,CONCAT('DEMO-AU-',x.seq),1,@admin_id,x.module,x.action_name,x.target_type,x.seq, + SHA2(CONCAT('before-',x.seq),256),SHA2(CONCAT('after-',x.seq),256), + JSON_OBJECT('demo',TRUE,'sequence',x.seq),'本地演示审计数据',CONCAT('DEMO-AP-',LPAD(x.seq+1,2,'0')), + CONCAT('demo-trace-audit-',x.seq),IF(x.seq=1,'',SHA2(CONCAT('audit-',x.seq-1),256)), + SHA2(CONCAT('audit-',x.seq),256),DATE_SUB(@now,INTERVAL x.seq HOUR) +FROM ( + SELECT 1 seq,'member' module,'member.edit' action_name,'app_member' target_type + UNION ALL SELECT 2,'wallet','wallet.adjust','wallet_account' + UNION ALL SELECT 3,'content','content.publish','content' +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_biz_audit_log l WHERE l.audit_no=CONCAT('DEMO-AU-',x.seq)); + +INSERT INTO hg_idempotency_record +(`tenant_id`,`scope`,`idempotency_key`,`request_digest`,`resource_type`,`resource_id`,`process_status`,`response_code`,`response_digest`,`expire_at`,`created_at`,`updated_at`) +SELECT @tenant_id,CONCAT('demo_scope_',x.status),CONCAT('DEMO-IDEMPOTENCY-',x.status), + SHA2(CONCAT('request-',x.status),256),'demo_resource',x.status,x.status, + IF(x.status=1,NULL,IF(x.status=2,0,500)),IF(x.status=1,NULL,SHA2(CONCAT('response-',x.status),256)), + DATE_ADD(@now,INTERVAL 1 DAY),DATE_SUB(@now,INTERVAL x.status HOUR),@now +FROM (SELECT 1 status UNION ALL SELECT 2 UNION ALL SELECT 3) x +WHERE NOT EXISTS ( + SELECT 1 FROM hg_idempotency_record i + WHERE i.tenant_id=@tenant_id AND i.scope=CONCAT('demo_scope_',x.status) AND i.idempotency_key=CONCAT('DEMO-IDEMPOTENCY-',x.status) +); + +INSERT INTO hg_outbox_event +(`tenant_id`,`event_no`,`aggregate_type`,`aggregate_id`,`event_type`,`payload_json`,`publish_status`,`retry_count`,`next_retry_at`,`last_error`,`created_at`,`published_at`) +SELECT @tenant_id,CONCAT('DEMO-EV-',x.status),'demo_aggregate',x.status,CONCAT('demo.event.',x.status), + JSON_OBJECT('demo',TRUE,'status',x.status),x.status,IF(x.status=3,3,0), + IF(x.status=3,DATE_ADD(@now,INTERVAL 10 MINUTE),NULL),IF(x.status=3,'演示:等待重试',NULL), + DATE_SUB(@now,INTERVAL x.status HOUR),IF(x.status=2,DATE_SUB(@now,INTERVAL 1 HOUR),NULL) +FROM (SELECT 1 status UNION ALL SELECT 2 UNION ALL SELECT 3) x +WHERE NOT EXISTS (SELECT 1 FROM hg_outbox_event e WHERE e.event_no=CONCAT('DEMO-EV-',x.status)); + +INSERT INTO hg_dashboard_daily_stat +(`tenant_id`,`stat_date`,`dimension_type`,`dimension_value`,`metric_code`,`metric_count`,`metric_amount`,`calculated_at`,`created_at`,`updated_at`) +SELECT @tenant_id,CURDATE(),x.dimension_type,x.dimension_value,x.metric_code,x.metric_count,x.metric_amount,@now,@now,@now +FROM ( + SELECT 'all' dimension_type,'all' dimension_value,'member_new' metric_code,28 metric_count,0 metric_amount + UNION ALL SELECT 'all','all','trade_order',156,1286500 + UNION ALL SELECT 'channel','wechat','recharge_success',43,586000 + UNION ALL SELECT 'channel','bank','withdrawal_success',18,236000 + UNION ALL SELECT 'task','all','task_settled',67,33500 +) x +WHERE NOT EXISTS ( + SELECT 1 FROM hg_dashboard_daily_stat s + WHERE s.tenant_id=@tenant_id AND s.stat_date=CURDATE() AND s.dimension_type=x.dimension_type + AND s.dimension_value=x.dimension_value AND s.metric_code=x.metric_code +); + +-- -------------------------------------------------------------------------- +-- 2. 门户:站点配置、文本及版本、Banner、商品与分类 +-- -------------------------------------------------------------------------- + +INSERT INTO hg_site_config_version +(`tenant_id`,`config_no`,`config_group`,`schema_version`,`config_json`,`config_digest`,`publish_status`,`effective_at`,`published_at`,`approval_request_id`,`base_version_id`,`version`,`remark`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,CONCAT('DEMO-CFG-',LPAD(x.status,2,'0')),'demo_site','1.0', + JSON_OBJECT('siteName',CONCAT('演示站点-',x.status),'customerService','400-800-0000','status',x.status), + SHA2(CONCAT('demo-config-',x.status),256),x.status,DATE_ADD(@now,INTERVAL x.status DAY), + IF(x.status=3,DATE_SUB(@now,INTERVAL 1 DAY),NULL), + COALESCE((SELECT id FROM hg_approval_request WHERE approval_no=CONCAT('DEMO-AP-',LPAD(LEAST(x.status+1,8),2,'0'))),0), + 0,x.status-1,CONCAT('本地演示配置状态 ',x.status),@admin_id,@admin_id, + DATE_SUB(@now,INTERVAL x.status DAY),@now +FROM (SELECT 1 status UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) x +WHERE NOT EXISTS (SELECT 1 FROM hg_site_config_version v WHERE v.config_no=CONCAT('DEMO-CFG-',LPAD(x.status,2,'0'))); + +-- 门户文本不使用演示占位数据,正式初始化见 20261008_portal_content_initial.sql。 + +INSERT INTO hg_banner +(`tenant_id`,`name`,`position`,`image_attachment_id`,`image_url`,`alt_text`,`target_type`,`target_value`,`start_at`,`end_at`,`publish_status`,`sort`,`version`,`remark`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,CONCAT('DEMO Banner-',x.status),IF(MOD(x.status,2)=1,'home_top','home_popup'),0, + CONCAT('https://picsum.photos/seed/banner-',x.status,'/1200/360'),CONCAT('演示 Banner 状态 ',x.status), + 1+MOD(x.status-1,3),IF(MOD(x.status,3)=0,'https://example.com',CONCAT('/demo/banner/',x.status)), + DATE_SUB(@now,INTERVAL 2 DAY),DATE_ADD(@now,INTERVAL 30 DAY),x.status,x.status*10,x.status-1, + '本地演示数据',@admin_id,@admin_id,DATE_SUB(@now,INTERVAL x.status DAY),@now +FROM (SELECT 1 status UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) x +WHERE NOT EXISTS (SELECT 1 FROM hg_banner b WHERE b.name=CONCAT('DEMO Banner-',x.status)); + +INSERT INTO hg_product_category +(`tenant_id`,`pid`,`level`,`tree`,`category_code`,`name`,`status`,`sort`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,0,1,'',x.code,x.name,x.status,x.sort,@admin_id,@admin_id,@now,@now +FROM ( + SELECT 'DEMO_DAILY' code,'演示日用百货' name,1 status,20 sort + UNION ALL SELECT 'DEMO_DIGITAL','演示数码家电',1,30 + UNION ALL SELECT 'DEMO_DISABLED','演示停用分类',2,99 +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_product_category c WHERE c.tenant_id=@tenant_id AND c.category_code=x.code); + +SET @demo_category_id = (SELECT id FROM hg_product_category WHERE tenant_id=@tenant_id AND category_code='DEMO_DAILY' LIMIT 1); + +INSERT INTO hg_product +(`tenant_id`,`product_no`,`category_id`,`product_type`,`payment_type`,`name`,`shop_name`,`price_amount`,`currency`,`cover_attachment_id`,`cover_url`,`detail_html`,`is_recommended`,`publish_status`,`start_at`,`end_at`,`sort`,`version`,`remark`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,CONCAT('DEMO-P-',LPAD(x.status,2,'0')),@demo_category_id,IF(MOD(x.status,2)=0,1,2),'balance', + CONCAT(x.label,'演示商品'),'Olons 演示店',9900+x.status*1000,'CNY',0, + CONCAT('https://picsum.photos/seed/product-',x.status,'/640/480'), + CONCAT('

',x.label,'演示商品

用于后台状态展示。

'),IF(MOD(x.status,2)=1,1,2),x.status, + DATE_SUB(@now,INTERVAL 3 DAY),DATE_ADD(@now,INTERVAL 30 DAY),x.status*10,x.status-1,'本地演示数据', + @admin_id,@admin_id,DATE_SUB(@now,INTERVAL x.status DAY),@now +FROM ( + SELECT 1 status,'草稿' label UNION ALL SELECT 2,'待审' UNION ALL SELECT 3,'已发布' + UNION ALL SELECT 4,'已下线' UNION ALL SELECT 5,'已归档' +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_product p WHERE p.tenant_id=@tenant_id AND p.product_no=CONCAT('DEMO-P-',LPAD(x.status,2,'0'))); + +-- -------------------------------------------------------------------------- +-- 3. 会员、等级、隐私资料、钱包、通知和任务大厅 +-- -------------------------------------------------------------------------- + +INSERT INTO hg_app_member_level +(`tenant_id`,`level_code`,`name`,`icon_attachment_id`,`icon_url`,`current_version_id`,`member_count`,`status`,`sort`,`remark`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,x.code,x.name,0,CONCAT('https://picsum.photos/seed/level-',x.sort,'/128/128'),0,x.member_count,x.status,x.sort, + '本地演示等级',@admin_id,@admin_id,@now,@now +FROM ( + SELECT 'DEMO_VIP2' code,'白银VIP' name,26 member_count,1 status,20 sort + UNION ALL SELECT 'DEMO_VIP3','黄金VIP',12,1,30 + UNION ALL SELECT 'DEMO_VIP_DISABLED','停用等级',0,2,99 +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_app_member_level l WHERE l.tenant_id=@tenant_id AND l.level_code=x.code); + +SET @level_normal_id = COALESCE((SELECT id FROM hg_app_member_level WHERE tenant_id=@tenant_id AND level_code='VIP1' LIMIT 1),(SELECT id FROM hg_app_member_level WHERE tenant_id=@tenant_id ORDER BY id LIMIT 1)); +SET @level_silver_id = (SELECT id FROM hg_app_member_level WHERE tenant_id=@tenant_id AND level_code='DEMO_VIP2' LIMIT 1); +SET @level_gold_id = (SELECT id FROM hg_app_member_level WHERE tenant_id=@tenant_id AND level_code='DEMO_VIP3' LIMIT 1); + +INSERT INTO hg_app_member_level_version +(`tenant_id`,`level_id`,`version_no`,`upgrade_amount`,`gift_amount`,`daily_order_limit`,`commission_rate`,`daily_withdraw_limit`,`rule_json`,`publish_status`,`effective_at`,`published_at`,`approval_request_id`,`base_version_id`,`version`,`remark`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,@level_silver_id,100+x.status,x.status*100000,x.status*1000,5+x.status,100+x.status*25,1+x.status, + JSON_OBJECT('demo',TRUE,'status',x.status,'dailyOrderLimit',5+x.status),x.status, + DATE_ADD(@now,INTERVAL x.status DAY),IF(x.status=3,DATE_SUB(@now,INTERVAL 1 DAY),NULL), + COALESCE((SELECT id FROM hg_approval_request WHERE approval_no=CONCAT('DEMO-AP-',LPAD(LEAST(x.status+1,8),2,'0'))),0), + 0,x.status-1,CONCAT('演示等级版本状态 ',x.status),@admin_id,@admin_id, + DATE_SUB(@now,INTERVAL x.status DAY),@now +FROM (SELECT 1 status UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) x +WHERE NOT EXISTS ( + SELECT 1 FROM hg_app_member_level_version v WHERE v.level_id=@level_silver_id AND v.version_no=100+x.status +); + +UPDATE hg_app_member_level l +JOIN hg_app_member_level_version v ON v.level_id=l.id AND v.publish_status=3 AND v.version_no=103 +SET l.current_version_id=v.id +WHERE l.id=@level_silver_id AND l.current_version_id=0; + +SET @demo_password_hash = COALESCE((SELECT password_hash FROM hg_app_member ORDER BY id LIMIT 1),'$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi.'); + +INSERT INTO hg_app_member +(`tenant_id`,`member_no`,`username`,`mobile_cipher`,`mobile_hash`,`mobile_mask`,`password_hash`,`trade_password_hash`,`level_id`,`parent_id`,`level`,`tree`,`invite_code`,`member_status`,`risk_status`,`auto_dispatch`,`credit_score`,`is_test_account`,`last_login_at`,`last_login_ip_cipher`,`last_login_ip_mask`,`last_login_region`,`created_by`,`updated_by`,`deleted_by`,`created_at`,`updated_at`,`deleted_at`) +SELECT @tenant_id,CONCAT('DEMO-MB-',LPAD(x.seq,2,'0')),CONCAT('demo_user_',LPAD(x.seq,2,'0')), + CONCAT('DEMO_MOBILE_CIPHER_',x.seq),SHA2(CONCAT('1380000100',x.seq),256),CONCAT('138****10',LPAD(x.seq,2,'0')), + @demo_password_hash,'',x.level_id,0,1,'',CONCAT('DM',LPAD(x.seq,6,'0')),x.member_status,x.risk_status, + IF(MOD(x.seq,2)=1,1,2),100-x.seq*5,1,DATE_SUB(@now,INTERVAL x.seq HOUR),'DEMO_IP_CIPHER','127.0.*.*','中国 上海', + @admin_id,@admin_id,IF(x.member_status=3,@admin_id,0),DATE_SUB(@now,INTERVAL x.seq*3 DAY),@now, + IF(x.member_status=3,DATE_SUB(@now,INTERVAL 1 DAY),NULL) +FROM ( + SELECT 1 seq,@level_normal_id level_id,1 member_status,1 risk_status + UNION ALL SELECT 2,@level_silver_id,1,2 + UNION ALL SELECT 3,@level_gold_id,2,3 + UNION ALL SELECT 4,@level_normal_id,3,1 +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_app_member m WHERE m.tenant_id=@tenant_id AND m.member_no=CONCAT('DEMO-MB-',LPAD(x.seq,2,'0'))); + +SET @member_1 = (SELECT id FROM hg_app_member WHERE tenant_id=@tenant_id AND member_no='DEMO-MB-01' LIMIT 1); +SET @member_2 = (SELECT id FROM hg_app_member WHERE tenant_id=@tenant_id AND member_no='DEMO-MB-02' LIMIT 1); +SET @member_3 = (SELECT id FROM hg_app_member WHERE tenant_id=@tenant_id AND member_no='DEMO-MB-03' LIMIT 1); +SET @member_4 = (SELECT id FROM hg_app_member WHERE tenant_id=@tenant_id AND member_no='DEMO-MB-04' LIMIT 1); + +INSERT INTO hg_app_member_profile +(`tenant_id`,`member_id`,`real_name_cipher`,`real_name_mask`,`id_no_cipher`,`id_no_hash`,`id_no_mask`,`avatar_attachment_id`,`kyc_status`,`kyc_verified_at`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,x.member_id,CONCAT('DEMO_NAME_CIPHER_',x.seq),CONCAT('演示',x.seq,'*'), + CONCAT('DEMO_ID_CIPHER_',x.seq),SHA2(CONCAT('3101011990010100',x.seq),256),CONCAT('310101********00',x.seq),0, + x.kyc_status,IF(x.kyc_status=2,DATE_SUB(@now,INTERVAL x.seq DAY),NULL),@admin_id,@admin_id,@now,@now +FROM ( + SELECT 1 seq,@member_1 member_id,1 kyc_status UNION ALL SELECT 2,@member_2,2 UNION ALL SELECT 3,@member_3,3 UNION ALL SELECT 4,@member_4,2 +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_app_member_profile p WHERE p.member_id=x.member_id); + +INSERT INTO hg_app_member_address +(`tenant_id`,`member_id`,`receiver_cipher`,`receiver_mask`,`mobile_cipher`,`mobile_mask`,`province`,`city`,`district`,`address_cipher`,`address_mask`,`is_default`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,x.member_id,CONCAT('DEMO_RECEIVER_CIPHER_',x.seq),CONCAT('演示',x.seq,'*'), + CONCAT('DEMO_ADDRESS_MOBILE_',x.seq),CONCAT('138****20',LPAD(x.seq,2,'0')),'上海市','上海市',IF(x.seq=1,'浦东新区','徐汇区'), + CONCAT('DEMO_ADDRESS_CIPHER_',x.seq),CONCAT('演示路 ',x.seq,'** 号'),x.is_default,@admin_id,@admin_id,@now,@now +FROM (SELECT 1 seq,@member_1 member_id,1 is_default UNION ALL SELECT 2,@member_2,2 UNION ALL SELECT 3,@member_3,1) x +WHERE NOT EXISTS ( + SELECT 1 FROM hg_app_member_address a WHERE a.member_id=x.member_id AND a.address_mask=CONCAT('演示路 ',x.seq,'** 号') +); + +INSERT INTO hg_app_member_payment_account +(`tenant_id`,`member_id`,`account_type`,`bank_code`,`bank_name`,`holder_cipher`,`holder_mask`,`mobile_cipher`,`mobile_mask`,`account_no_cipher`,`account_no_hash`,`account_no_mask`,`qr_attachment_id`,`verify_status`,`is_default`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,x.member_id,x.account_type,CONCAT('BANK',x.account_type),x.bank_name, + CONCAT('DEMO_HOLDER_CIPHER_',x.account_type),CONCAT('演示',x.account_type,'*'),CONCAT('DEMO_PAY_MOBILE_',x.account_type), + CONCAT('138****30',LPAD(x.account_type,2,'0')),CONCAT('DEMO_ACCOUNT_CIPHER_',x.account_type), + SHA2(CONCAT('demo-account-',x.account_type),256),CONCAT('**** **** **** ',LPAD(1000+x.account_type,4,'0')),0, + IF(x.account_type IN (1,3,5),2,1),IF(x.account_type=1,1,2),@admin_id,@admin_id,@now,@now +FROM ( + SELECT 1 account_type,@member_1 member_id,'演示银行' bank_name UNION ALL + SELECT 2,@member_2,'数字钱包' UNION ALL SELECT 3,@member_3,'云闪付' UNION ALL + SELECT 4,@member_1,'支付宝' UNION ALL SELECT 5,@member_2,'微信' +) x +WHERE NOT EXISTS ( + SELECT 1 FROM hg_app_member_payment_account a WHERE a.tenant_id=@tenant_id AND a.account_no_hash=SHA2(CONCAT('demo-account-',x.account_type),256) +); + +SET @payment_account_id = (SELECT id FROM hg_app_member_payment_account WHERE tenant_id=@tenant_id AND account_no_hash=SHA2('demo-account-1',256) LIMIT 1); + +INSERT INTO hg_app_member_status_log +(`tenant_id`,`member_id`,`from_status`,`to_status`,`reason_code`,`reason_text`,`effective_at`,`expire_at`,`approval_request_id`,`operator_id`,`created_at`) +SELECT @tenant_id,x.member_id,x.from_status,x.to_status,CONCAT('demo_status_',x.seq),x.reason_text, + DATE_SUB(@now,INTERVAL x.seq DAY),IF(x.to_status=2,DATE_ADD(@now,INTERVAL 30 DAY),NULL), + (SELECT id FROM hg_approval_request WHERE approval_no=CONCAT('DEMO-AP-',LPAD(x.seq+3,2,'0')) LIMIT 1),@reviewer_id,@now +FROM ( + SELECT 1 seq,@member_3 member_id,1 from_status,2 to_status,'风控审核后禁用' reason_text + UNION ALL SELECT 2,@member_2,2,1,'复核后恢复正常' + UNION ALL SELECT 3,@member_4,1,3,'用户申请注销' +) x +WHERE NOT EXISTS ( + SELECT 1 FROM hg_app_member_status_log l WHERE l.member_id=x.member_id AND l.reason_code=CONCAT('demo_status_',x.seq) +); + +INSERT INTO hg_wallet_account +(`tenant_id`,`member_id`,`currency`,`available_amount`,`frozen_amount`,`total_income`,`total_expense`,`account_status`,`version`,`created_at`,`updated_at`) +SELECT @tenant_id,x.member_id,'CNY',x.available_amount,x.frozen_amount,x.total_income,x.total_expense,x.account_status,x.seq,@now,@now +FROM ( + SELECT 1 seq,@member_1 member_id,880000 available_amount,20000 frozen_amount,1200000 total_income,300000 total_expense,1 account_status + UNION ALL SELECT 2,@member_2,356000,44000,700000,300000,1 + UNION ALL SELECT 3,@member_3,0,0,120000,120000,2 +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_wallet_account a WHERE a.tenant_id=@tenant_id AND a.member_id=x.member_id AND a.currency='CNY'); + +SET @wallet_1 = (SELECT id FROM hg_wallet_account WHERE tenant_id=@tenant_id AND member_id=@member_1 AND currency='CNY' LIMIT 1); +SET @wallet_2 = (SELECT id FROM hg_wallet_account WHERE tenant_id=@tenant_id AND member_id=@member_2 AND currency='CNY' LIMIT 1); + +INSERT INTO hg_wallet_ledger +(`tenant_id`,`ledger_no`,`account_id`,`member_id`,`biz_type`,`biz_no`,`entry_type`,`direction`,`amount`,`before_amount`,`after_amount`,`currency`,`reversal_of`,`idempotency_key`,`remark`,`operator_id`,`occurred_at`,`created_at`) +SELECT @tenant_id,CONCAT('DEMO-LG-',LPAD(x.seq,2,'0')),x.account_id,x.member_id,x.biz_type,CONCAT('DEMO-BIZ-',LPAD(x.seq,2,'0')), + x.entry_type,x.direction,x.amount,x.before_amount,x.after_amount,'CNY',0,CONCAT('DEMO-LEDGER-IDEMP-',x.seq),x.remark,@admin_id, + DATE_SUB(@now,INTERVAL x.seq HOUR),DATE_SUB(@now,INTERVAL x.seq HOUR) +FROM ( + SELECT 1 seq,@wallet_1 account_id,@member_1 member_id,'recharge' biz_type,'recharge_credit' entry_type,1 direction,100000 amount,500000 before_amount,600000 after_amount,'充值入账' remark + UNION ALL SELECT 2,@wallet_1,@member_1,'withdrawal','withdrawal_debit',2,50000,600000,550000,'提现扣款' + UNION ALL SELECT 3,@wallet_2,@member_2,'task','task_commission',1,3000,300000,303000,'任务佣金' + UNION ALL SELECT 4,@wallet_2,@member_2,'adjustment','manual_deduct',2,2000,303000,301000,'人工扣回' +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_wallet_ledger l WHERE l.tenant_id=@tenant_id AND l.ledger_no=CONCAT('DEMO-LG-',LPAD(x.seq,2,'0'))); + +SET @ledger_recharge = (SELECT id FROM hg_wallet_ledger WHERE ledger_no='DEMO-LG-01' LIMIT 1); +SET @ledger_withdraw = (SELECT id FROM hg_wallet_ledger WHERE ledger_no='DEMO-LG-02' LIMIT 1); +SET @ledger_task = (SELECT id FROM hg_wallet_ledger WHERE ledger_no='DEMO-LG-03' LIMIT 1); + +INSERT INTO hg_wallet_ledger +(`tenant_id`,`ledger_no`,`account_id`,`member_id`,`biz_type`,`biz_no`,`entry_type`,`direction`,`amount`,`before_amount`,`after_amount`,`currency`,`reversal_of`,`idempotency_key`,`remark`,`operator_id`,`occurred_at`,`created_at`) +SELECT @tenant_id,'DEMO-LG-05',@wallet_2,@member_2,'task','DEMO-BIZ-03','task_commission_reversal',2,3000,301000,298000,'CNY',@ledger_task, + 'DEMO-LEDGER-IDEMP-5','任务佣金冲正演示',@admin_id,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM hg_wallet_ledger WHERE ledger_no='DEMO-LG-05'); + +INSERT INTO hg_wallet_adjustment_request +(`tenant_id`,`request_no`,`member_id`,`account_id`,`adjust_type`,`direction`,`amount`,`reason_code`,`reason_text`,`evidence_json`,`idempotency_key`,`request_status`,`approval_request_id`,`ledger_id`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,CONCAT('DEMO-WA-',LPAD(x.status,2,'0')),x.member_id,x.account_id,x.adjust_type,x.direction,1000*x.status, + CONCAT('demo_adjust_',x.status),CONCAT('演示资金调账状态 ',x.status),JSON_ARRAY(),CONCAT('DEMO-WA-IDEMP-',x.status),x.status, + COALESCE((SELECT id FROM hg_approval_request WHERE approval_no=CONCAT('DEMO-AP-',LPAD(x.status+1,2,'0'))),0), + IF(x.status=4,COALESCE((SELECT id FROM hg_wallet_ledger WHERE ledger_no='DEMO-LG-04'),0),0),@admin_id,@admin_id, + DATE_SUB(@now,INTERVAL x.status DAY),@now +FROM ( + SELECT 1 status,@member_1 member_id,@wallet_1 account_id,1 adjust_type,1 direction + UNION ALL SELECT 2,@member_2,@wallet_2,2,1 + UNION ALL SELECT 3,@member_1,@wallet_1,3,2 + UNION ALL SELECT 4,@member_2,@wallet_2,4,2 +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_wallet_adjustment_request r WHERE r.request_no=CONCAT('DEMO-WA-',LPAD(x.status,2,'0'))); + +INSERT INTO hg_app_member_notice +(`tenant_id`,`member_id`,`title`,`content`,`source_type`,`start_at`,`end_at`,`notice_status`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,x.member_id,CONCAT('DEMO 通知-',x.seq),x.content,x.source_type,DATE_SUB(@now,INTERVAL 1 DAY), + DATE_ADD(@now,INTERVAL 30 DAY),x.notice_status,@admin_id,@admin_id,@now,@now +FROM ( + SELECT 1 seq,0 member_id,'系统维护通知(真实)' content,1 source_type,1 notice_status + UNION ALL SELECT 2,@member_1,'运营活动效果模拟',2,1 + UNION ALL SELECT 3,@member_2,'已撤回的真实通知',1,2 + UNION ALL SELECT 4,0,'已撤回的运营模拟',2,2 +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_app_member_notice n WHERE n.title=CONCAT('DEMO 通知-',x.seq)); + +INSERT INTO hg_task_hall +(`tenant_id`,`hall_code`,`name`,`icon_attachment_id`,`icon_url`,`summary`,`commission_rate`,`rate_unit`,`client_route`,`publish_status`,`sort`,`version`,`remark`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,CONCAT('DEMO_HALL_',x.status),CONCAT(x.label,'任务大厅'),0, + CONCAT('https://picsum.photos/seed/hall-',x.status,'/256/256'),CONCAT('用于展示',x.label,'状态'),100+x.status*20, + 'basis_point',CONCAT('/task-hall/demo-',x.status),x.status,x.status*10,x.status-1,'本地演示数据',@admin_id,@admin_id, + DATE_SUB(@now,INTERVAL x.status DAY),@now +FROM ( + SELECT 1 status,'草稿' label UNION ALL SELECT 2,'待审' UNION ALL SELECT 3,'已发布' + UNION ALL SELECT 4,'已下线' UNION ALL SELECT 5,'已归档' +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_task_hall h WHERE h.tenant_id=@tenant_id AND h.hall_code=CONCAT('DEMO_HALL_',x.status)); + +INSERT INTO hg_task_hall_level (`tenant_id`,`hall_id`,`level_id`,`created_at`) +SELECT @tenant_id,h.id,l.id,@now +FROM hg_task_hall h +JOIN hg_app_member_level l ON l.level_code IN ('VIP1','DEMO_VIP2','DEMO_VIP3') AND l.tenant_id=@tenant_id +WHERE h.hall_code LIKE 'DEMO_HALL_%' AND h.tenant_id=@tenant_id + AND NOT EXISTS (SELECT 1 FROM hg_task_hall_level hl WHERE hl.tenant_id=@tenant_id AND hl.hall_id=h.id AND hl.level_id=l.id); + +-- -------------------------------------------------------------------------- +-- 4. 商品任务、交易订单、充值、提现、财务复核和客服 +-- -------------------------------------------------------------------------- + +SET @demo_hall_id = (SELECT id FROM hg_task_hall WHERE tenant_id=@tenant_id AND hall_code='DEMO_HALL_3' LIMIT 1); + +INSERT INTO hg_task +(`tenant_id`,`task_no`,`hall_id`,`title`,`description`,`detail_html`,`cover_attachment_id`,`cover_url`,`commission_amount`,`commission_rate`,`daily_limit`,`per_member_limit`,`start_at`,`end_at`,`publish_status`,`sort`,`version`,`remark`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,CONCAT('DEMO-TK-',LPAD(x.status,2,'0')),@demo_hall_id,CONCAT(x.label,'演示任务'), + CONCAT('这是',x.label,'状态的任务数据'),CONCAT('

',x.label,'任务

请按要求提交演示凭证。

'),0, + CONCAT('https://picsum.photos/seed/task-',x.status,'/640/360'),500+x.status*100,50*x.status,100,1, + DATE_SUB(@now,INTERVAL 3 DAY),DATE_ADD(@now,INTERVAL 30 DAY),x.status,x.status*10,x.status-1, + '本地演示数据',@admin_id,@admin_id,DATE_SUB(@now,INTERVAL x.status DAY),@now +FROM ( + SELECT 1 status,'草稿' label UNION ALL SELECT 2,'待审' UNION ALL SELECT 3,'已发布' + UNION ALL SELECT 4,'已下线' UNION ALL SELECT 5,'已归档' +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_task t WHERE t.tenant_id=@tenant_id AND t.task_no=CONCAT('DEMO-TK-',LPAD(x.status,2,'0'))); + +INSERT INTO hg_task_level (`tenant_id`,`task_id`,`level_id`,`created_at`) +SELECT @tenant_id,t.id,l.id,@now +FROM hg_task t +JOIN hg_app_member_level l ON l.level_code IN ('VIP1','DEMO_VIP2','DEMO_VIP3') AND l.tenant_id=@tenant_id +WHERE t.task_no LIKE 'DEMO-TK-%' AND t.tenant_id=@tenant_id + AND NOT EXISTS (SELECT 1 FROM hg_task_level tl WHERE tl.tenant_id=@tenant_id AND tl.task_id=t.id AND tl.level_id=l.id); + +SET @task_published_id = (SELECT id FROM hg_task WHERE tenant_id=@tenant_id AND task_no='DEMO-TK-03' LIMIT 1); +SET @product_published_id = (SELECT id FROM hg_product WHERE tenant_id=@tenant_id AND product_no='DEMO-P-03' LIMIT 1); + +INSERT INTO hg_trade_order +(`tenant_id`,`order_no`,`member_id`,`task_id`,`product_id`,`product_name`,`order_type`,`quantity`,`unit_price_amount`,`total_amount`,`commission_amount`,`currency`,`member_level_id`,`rule_snapshot`,`message`,`order_status`,`freeze_status`,`approval_request_id`,`matched_at`,`completed_at`,`unfrozen_at`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,CONCAT('DEMO-ORD-',LPAD(x.status,2,'0')),x.member_id, + IF(x.order_type=2,@task_published_id,0),IF(x.order_type<>2,@product_published_id,0),CONCAT(x.label,'演示订单'),x.order_type, + 1,10000+x.status*100,10000+x.status*100,500+x.status*10,'CNY',x.level_id, + JSON_OBJECT('demo',TRUE,'orderStatus',x.status,'commissionRate',200),CONCAT('演示订单状态:',x.label),x.status, + 1+MOD(x.status-1,3),IF(x.status IN (6,7,8),(SELECT id FROM hg_approval_request WHERE approval_no='DEMO-AP-04' LIMIT 1),0), + IF(x.status>=2,DATE_SUB(@now,INTERVAL x.status HOUR),NULL),IF(x.status=4,DATE_SUB(@now,INTERVAL 1 HOUR),NULL), + IF(x.status=2,DATE_SUB(@now,INTERVAL 30 MINUTE),NULL),@admin_id,@admin_id,DATE_SUB(@now,INTERVAL x.status DAY),@now +FROM ( + SELECT 1 status,@member_1 member_id,@level_normal_id level_id,1 order_type,'匹配中' label + UNION ALL SELECT 2,@member_2,@level_silver_id,2,'待处理' + UNION ALL SELECT 3,@member_1,@level_normal_id,3,'处理中' + UNION ALL SELECT 4,@member_2,@level_silver_id,1,'已完成' + UNION ALL SELECT 5,@member_1,@level_normal_id,2,'已超时' + UNION ALL SELECT 6,@member_2,@level_silver_id,1,'已冻结' + UNION ALL SELECT 7,@member_1,@level_normal_id,3,'已取消' + UNION ALL SELECT 8,@member_2,@level_silver_id,2,'失败' +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_trade_order o WHERE o.tenant_id=@tenant_id AND o.order_no=CONCAT('DEMO-ORD-',LPAD(x.status,2,'0'))); + +-- 任务审核需要独立订单,避免 trade_order_id 唯一索引冲突。 +INSERT INTO hg_trade_order +(`tenant_id`,`order_no`,`member_id`,`task_id`,`product_id`,`product_name`,`order_type`,`quantity`,`unit_price_amount`,`total_amount`,`commission_amount`,`currency`,`member_level_id`,`rule_snapshot`,`message`,`order_status`,`freeze_status`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,CONCAT('DEMO-TS-ORD-',x.status),x.member_id,@task_published_id,0,'任务审核关联订单',2,1,0,0,500+x.status*100, + 'CNY',x.level_id,JSON_OBJECT('demo',TRUE,'submissionStatus',x.status),'任务审核关联订单',4,1,@admin_id,@admin_id, + DATE_SUB(@now,INTERVAL x.status DAY),@now +FROM ( + SELECT 1 status,@member_1 member_id,@level_normal_id level_id UNION ALL SELECT 2,@member_2,@level_silver_id + UNION ALL SELECT 3,@member_1,@level_normal_id UNION ALL SELECT 4,@member_2,@level_silver_id + UNION ALL SELECT 5,@member_1,@level_normal_id +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_trade_order o WHERE o.tenant_id=@tenant_id AND o.order_no=CONCAT('DEMO-TS-ORD-',x.status)); + +INSERT INTO hg_task_submission +(`tenant_id`,`submission_no`,`trade_order_id`,`task_id`,`member_id`,`member_level_id`,`evidence_text`,`evidence_attachment_ids`,`submission_status`,`commission_amount`,`success_rate`,`reviewed_by`,`reviewed_at`,`review_reason_code`,`review_reason`,`allow_resubmit`,`ledger_id`,`settled_at`,`reversal_approval_id`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,CONCAT('DEMO-TS-',LPAD(x.status,2,'0')),o.id,@task_published_id,x.member_id,x.level_id, + CONCAT('演示任务凭证,审核状态:',x.label),JSON_ARRAY(CONCAT('https://picsum.photos/seed/evidence-',x.status,'/800/600')), + x.status,500+x.status*100,7000+x.status*300,IF(x.status=1,0,@reviewer_id),IF(x.status=1,NULL,DATE_SUB(@now,INTERVAL 1 HOUR)), + IF(x.status=3,'evidence_invalid',''),IF(x.status=3,'凭证不符合要求',IF(x.status>1,'演示审核意见','')), + IF(x.status=3,1,2),IF(x.status IN (4,5),@ledger_task,0),IF(x.status IN (4,5),DATE_SUB(@now,INTERVAL 2 HOUR),NULL), + IF(x.status=5,(SELECT id FROM hg_approval_request WHERE approval_no='DEMO-AP-07' LIMIT 1),0),@admin_id,@admin_id, + DATE_SUB(@now,INTERVAL x.status DAY),@now +FROM ( + SELECT 1 status,@member_1 member_id,@level_normal_id level_id,'待审核' label UNION ALL + SELECT 2,@member_2,@level_silver_id,'已通过' UNION ALL SELECT 3,@member_1,@level_normal_id,'已驳回' UNION ALL + SELECT 4,@member_2,@level_silver_id,'已结算' UNION ALL SELECT 5,@member_1,@level_normal_id,'已冲正' +) x +JOIN hg_trade_order o ON o.order_no=CONCAT('DEMO-TS-ORD-',x.status) AND o.tenant_id=@tenant_id +WHERE NOT EXISTS (SELECT 1 FROM hg_task_submission s WHERE s.submission_no=CONCAT('DEMO-TS-',LPAD(x.status,2,'0'))); + +INSERT INTO hg_payment_channel +(`tenant_id`,`channel_code`,`name`,`channel_type`,`direction`,`config_cipher`,`min_amount`,`max_amount`,`fee_type`,`fee_fixed_amount`,`fee_rate`,`status`,`sort`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,'demo_disabled','演示停用通道',1,3,'DEMO_CONFIG_CIPHER',100,1000000,1,0,30,2,99,@admin_id,@admin_id,@now,@now +WHERE NOT EXISTS (SELECT 1 FROM hg_payment_channel c WHERE c.tenant_id=@tenant_id AND c.channel_code='demo_disabled'); + +SET @payment_channel_id = COALESCE((SELECT id FROM hg_payment_channel WHERE tenant_id=@tenant_id AND channel_code='wechat' LIMIT 1),(SELECT id FROM hg_payment_channel WHERE tenant_id=@tenant_id ORDER BY id LIMIT 1)); + +INSERT INTO hg_recharge_order +(`tenant_id`,`recharge_no`,`member_id`,`channel_id`,`request_amount`,`paid_amount`,`currency`,`external_no`,`voucher_attachment_ids`,`recharge_type`,`recharge_status`,`remark`,`review_reason_code`,`review_reason`,`approval_request_id`,`ledger_id`,`paid_at`,`reviewed_at`,`credited_at`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,CONCAT('DEMO-RC-',LPAD(x.status,2,'0')),x.member_id,@payment_channel_id,10000*x.status, + IF(x.status=3,10000*x.status,0),'CNY',IF(x.status=3,CONCAT('EXT-DEMO-RC-',x.status),''),JSON_ARRAY(), + IF(MOD(x.status,2)=1,1,2),x.status,CONCAT('演示充值状态:',x.label),IF(x.status=4,'risk_rejected',''), + IF(x.status=4,'演示风控驳回',''),IF(x.status IN (2,3,4),(SELECT id FROM hg_approval_request WHERE approval_no=CONCAT('DEMO-AP-',LPAD(x.status+2,2,'0')) LIMIT 1),0), + IF(x.status=3,@ledger_recharge,0),IF(x.status IN (2,3),DATE_SUB(@now,INTERVAL 3 HOUR),NULL), + IF(x.status IN (3,4),DATE_SUB(@now,INTERVAL 2 HOUR),NULL),IF(x.status=3,DATE_SUB(@now,INTERVAL 1 HOUR),NULL), + @admin_id,@admin_id,DATE_SUB(@now,INTERVAL x.status DAY),@now +FROM ( + SELECT 1 status,@member_1 member_id,'用户未支付' label UNION ALL SELECT 2,@member_2,'手动审核' + UNION ALL SELECT 3,@member_1,'已入账' UNION ALL SELECT 4,@member_2,'手动驳回' + UNION ALL SELECT 5,@member_1,'已过期' UNION ALL SELECT 6,@member_2,'已取消' +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_recharge_order r WHERE r.tenant_id=@tenant_id AND r.recharge_no=CONCAT('DEMO-RC-',LPAD(x.status,2,'0'))); + +INSERT INTO hg_withdrawal_order +(`tenant_id`,`withdrawal_no`,`member_id`,`payment_account_id`,`channel_id`,`request_amount`,`fee_amount`,`actual_amount`,`currency`,`account_snapshot_cipher`,`account_mask`,`bank_name`,`holder_mask`,`risk_result`,`withdrawal_status`,`review_reason_code`,`review_reason`,`approval_request_id`,`external_no`,`freeze_ledger_id`,`final_ledger_id`,`reviewed_at`,`processed_at`,`completed_at`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,CONCAT('DEMO-WD-',LPAD(x.status,2,'0')),x.member_id,@payment_account_id,@payment_channel_id, + 20000+x.status*1000,100,19900+x.status*1000,'CNY','DEMO_ACCOUNT_SNAPSHOT','**** **** **** 1001','演示银行','演示*', + JSON_OBJECT('riskLevel',IF(x.status=6,'high','low'),'demo',TRUE),x.status, + IF(x.status=6,'risk_rejected',''),IF(x.status=6,'演示风控驳回',''), + IF(x.status IN (2,3,4,5,6),(SELECT id FROM hg_approval_request WHERE approval_no=CONCAT('DEMO-AP-',LPAD(LEAST(x.status+1,8),2,'0')) LIMIT 1),0), + IF(x.status IN (4,5),CONCAT('EXT-DEMO-WD-',x.status),''),IF(x.status>=2,@ledger_withdraw,0),IF(x.status IN (4,5,6),@ledger_withdraw,0), + IF(x.status>=2,DATE_SUB(@now,INTERVAL 3 HOUR),NULL),IF(x.status>=3,DATE_SUB(@now,INTERVAL 2 HOUR),NULL), + IF(x.status IN (4,5,6,7),DATE_SUB(@now,INTERVAL 1 HOUR),NULL),@admin_id,@admin_id,DATE_SUB(@now,INTERVAL x.status DAY),@now +FROM ( + SELECT 1 status,@member_1 member_id,'待初审' label UNION ALL SELECT 2,@member_2,'复核中' + UNION ALL SELECT 3,@member_1,'付款中' UNION ALL SELECT 4,@member_2,'已到账' + UNION ALL SELECT 5,@member_1,'付款失败' UNION ALL SELECT 6,@member_2,'已驳回' + UNION ALL SELECT 7,@member_1,'已取消' +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_withdrawal_order w WHERE w.tenant_id=@tenant_id AND w.withdrawal_no=CONCAT('DEMO-WD-',LPAD(x.status,2,'0'))); + +INSERT INTO hg_finance_review +(`tenant_id`,`approval_request_id`,`biz_type`,`biz_id`,`review_stage`,`reviewer_id`,`decision`,`reason_code`,`reason_text`,`snapshot_json`,`created_at`) +SELECT @tenant_id,a.id,x.biz_type,x.biz_id,x.stage,@reviewer_id,x.decision,CONCAT('demo_finance_',x.seq), + IF(x.decision=1,'演示审核通过','演示审核驳回'),JSON_OBJECT('demo',TRUE,'decision',x.decision),DATE_SUB(@now,INTERVAL x.seq HOUR) +FROM ( + SELECT 1 seq,'recharge' biz_type,(SELECT id FROM hg_recharge_order WHERE recharge_no='DEMO-RC-03' LIMIT 1) biz_id,1 stage,1 decision,'DEMO-AP-04' approval_no + UNION ALL SELECT 2,'recharge',(SELECT id FROM hg_recharge_order WHERE recharge_no='DEMO-RC-04' LIMIT 1),2,2,'DEMO-AP-05' + UNION ALL SELECT 3,'withdrawal',(SELECT id FROM hg_withdrawal_order WHERE withdrawal_no='DEMO-WD-04' LIMIT 1),1,1,'DEMO-AP-07' + UNION ALL SELECT 4,'withdrawal',(SELECT id FROM hg_withdrawal_order WHERE withdrawal_no='DEMO-WD-06' LIMIT 1),2,2,'DEMO-AP-06' +) x +JOIN hg_approval_request a ON a.approval_no=x.approval_no +WHERE NOT EXISTS ( + SELECT 1 FROM hg_finance_review f WHERE f.approval_request_id=a.id AND f.review_stage=x.stage AND f.reviewer_id=@reviewer_id +); + +INSERT INTO hg_customer_service +(`tenant_id`,`service_code`,`name`,`avatar_url`,`work_time`,`online_status`,`service_url`,`backup_contact`,`session_mapping`,`status`,`sort`,`remark`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,CONCAT('DEMO_CS_',x.seq),CONCAT('演示客服-',x.seq),CONCAT('https://picsum.photos/seed/cs-',x.seq,'/128/128'), + IF(x.seq=1,'周一至周日 09:00-22:00','工作日 09:00-18:00'),x.online_status,CONCAT('https://example.com/customer-service/',x.seq), + CONCAT('400-800-000',x.seq),JSON_OBJECT('channel','demo','seat',x.seq),x.status,x.seq*10,'本地演示客服', + @admin_id,@admin_id,@now,@now +FROM ( + SELECT 1 seq,1 online_status,1 status UNION ALL SELECT 2,2,1 UNION ALL SELECT 3,1,2 UNION ALL SELECT 4,2,2 +) x +WHERE NOT EXISTS (SELECT 1 FROM hg_customer_service c WHERE c.tenant_id=@tenant_id AND c.service_code=CONCAT('DEMO_CS_',x.seq)); + +-- 修正统计字段,保持演示列表与关联数据一致。 +UPDATE hg_app_member_level l +SET l.member_count=(SELECT COUNT(*) FROM hg_app_member m WHERE m.level_id=l.id AND m.deleted_at IS NULL) +WHERE l.tenant_id=@tenant_id AND l.level_code IN ('VIP1','DEMO_VIP2','DEMO_VIP3','DEMO_VIP_DISABLED'); + +-- 输出导入后的表行数,便于核对。 +SELECT table_name, table_rows +FROM information_schema.tables +WHERE table_schema=DATABASE() + AND table_name IN ( + 'hg_approval_request','hg_approval_action','hg_sensitive_access_log','hg_biz_audit_log','hg_idempotency_record','hg_outbox_event','hg_dashboard_daily_stat', + 'hg_site_config_version','hg_content','hg_content_version','hg_banner','hg_product','hg_product_category', + 'hg_app_member','hg_app_member_profile','hg_app_member_address','hg_app_member_payment_account','hg_app_member_status_log', + 'hg_wallet_account','hg_wallet_ledger','hg_wallet_adjustment_request','hg_app_member_notice','hg_app_member_level','hg_app_member_level_version', + 'hg_task_hall','hg_task_hall_level','hg_task','hg_task_level','hg_task_submission','hg_trade_order','hg_payment_channel', + 'hg_recharge_order','hg_withdrawal_order','hg_finance_review','hg_customer_service' + ) +ORDER BY table_name; diff --git a/server/storage/data/seeds/20261008_dashboard_demo_data.sql b/server/storage/data/seeds/20261008_dashboard_demo_data.sql new file mode 100644 index 0000000..0138e78 --- /dev/null +++ b/server/storage/data/seeds/20261008_dashboard_demo_data.sql @@ -0,0 +1,128 @@ +-- Olons Admin 商城看板演示数据 +-- 适用:MySQL 8.0+ 本地开发环境。 +-- 范围:仅写入 hg_dashboard_daily_stat,生成最近 61 天数据。 +-- 特征:可重复执行;相同租户、日期、维度和指标会更新为本脚本的演示值。 + +SET NAMES utf8mb4; +SET @tenant_id = 0; +-- 数据库容器使用 UTC;看板按 Asia/Shanghai 解析 DATETIME,因此写入本地当前时间。 +SET @calculated_at = DATE_ADD(UTC_TIMESTAMP(3), INTERVAL 8 HOUR); + +-- 全局指标:数量型、金额型以及期末快照。 +INSERT INTO hg_dashboard_daily_stat +(`tenant_id`,`stat_date`,`dimension_type`,`dimension_value`,`metric_code`,`metric_count`,`metric_amount`,`calculated_at`,`created_at`,`updated_at`) +SELECT + @tenant_id, + DATE_SUB(CURDATE(), INTERVAL days.day_offset DAY), + 'global', + 'all', + metrics.metric_code, + CASE metrics.metric_code + WHEN 'member_total' THEN 5068 - days.day_offset * 4 - MOD(days.day_offset, 3) + WHEN 'member_new' THEN 28 + MOD(days.day_offset * 7, 25) + WHEN 'recharge_member' THEN 192 + MOD(days.day_offset * 11, 76) + WHEN 'product_total' THEN 368 - FLOOR(days.day_offset / 7) + WHEN 'trade_order' THEN 813 + MOD(days.day_offset * 37, 240) + ELSE 0 + END, + CASE metrics.metric_code + WHEN 'trade_order' THEN 128650000 + MOD(days.day_offset * 1379000, 42000000) + WHEN 'recharge_success' THEN 58600000 + MOD(days.day_offset * 731000, 17000000) + WHEN 'recharge_pending' THEN 4600000 + MOD(days.day_offset * 139000, 1800000) + WHEN 'withdrawal_success' THEN 23600000 + MOD(days.day_offset * 511000, 8000000) + WHEN 'withdrawal_pending' THEN 2350000 + MOD(days.day_offset * 97000, 1200000) + WHEN 'commission' THEN 8640000 + MOD(days.day_offset * 173000, 3200000) + WHEN 'referral_commission' THEN 18000000 + MOD(days.day_offset * 241000, 6200000) + WHEN 'interest_transfer' THEN 33000000 + MOD(days.day_offset * 359000, 9600000) + WHEN 'wallet_available' THEN 895643025 - days.day_offset * 125000 + MOD(days.day_offset * 17003, 90000) + WHEN 'wallet_frozen' THEN 154680000 + MOD(days.day_offset * 223000, 3600000) + ELSE 0 + END, + @calculated_at, + @calculated_at, + @calculated_at +FROM ( + SELECT ones.n + tens.n * 10 AS day_offset + FROM ( + SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 + UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 + ) ones + CROSS JOIN ( + SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 + UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 + ) tens + WHERE ones.n + tens.n * 10 <= 60 +) days +CROSS JOIN ( + SELECT 'member_total' metric_code UNION ALL + SELECT 'member_new' UNION ALL + SELECT 'recharge_member' UNION ALL + SELECT 'product_total' UNION ALL + SELECT 'trade_order' UNION ALL + SELECT 'recharge_success' UNION ALL + SELECT 'recharge_pending' UNION ALL + SELECT 'withdrawal_success' UNION ALL + SELECT 'withdrawal_pending' UNION ALL + SELECT 'commission' UNION ALL + SELECT 'referral_commission' UNION ALL + SELECT 'interest_transfer' UNION ALL + SELECT 'wallet_available' UNION ALL + SELECT 'wallet_frozen' +) metrics +WHERE TRUE +ON DUPLICATE KEY UPDATE + `metric_count` = VALUES(`metric_count`), + `metric_amount` = VALUES(`metric_amount`), + `calculated_at` = VALUES(`calculated_at`), + `updated_at` = VALUES(`updated_at`); + +-- 渠道指标:今日基准值合计与全局充值、提现金额保持一致。 +INSERT INTO hg_dashboard_daily_stat +(`tenant_id`,`stat_date`,`dimension_type`,`dimension_value`,`metric_code`,`metric_count`,`metric_amount`,`calculated_at`,`created_at`,`updated_at`) +SELECT + @tenant_id, + DATE_SUB(CURDATE(), INTERVAL days.day_offset DAY), + 'channel', + channels.channel, + channels.metric_code, + channels.base_count + MOD(days.day_offset * channels.count_step, channels.count_range), + channels.base_amount + MOD(days.day_offset * channels.amount_step, channels.amount_range), + @calculated_at, + @calculated_at, + @calculated_at +FROM ( + SELECT ones.n + tens.n * 10 AS day_offset + FROM ( + SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 + UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 + ) ones + CROSS JOIN ( + SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 + UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 + ) tens + WHERE ones.n + tens.n * 10 <= 60 +) days +CROSS JOIN ( + SELECT 'wechat' channel, 'recharge_success' metric_code, 236 base_count, 28800000 base_amount, 13 count_step, 58 count_range, 373000 amount_step, 6800000 amount_range + UNION ALL SELECT 'wechat', 'withdrawal_success', 31, 4600000, 5, 17, 127000, 1700000 + UNION ALL SELECT 'alipay', 'recharge_success', 169, 19800000, 11, 46, 281000, 5200000 + UNION ALL SELECT 'alipay', 'withdrawal_success', 42, 7200000, 7, 23, 163000, 2100000 + UNION ALL SELECT 'bank', 'recharge_success', 87, 10000000, 7, 31, 199000, 3600000 + UNION ALL SELECT 'bank', 'withdrawal_success', 78, 11800000, 9, 34, 221000, 3200000 +) channels +WHERE TRUE +ON DUPLICATE KEY UPDATE + `metric_count` = VALUES(`metric_count`), + `metric_amount` = VALUES(`metric_amount`), + `calculated_at` = VALUES(`calculated_at`), + `updated_at` = VALUES(`updated_at`); + +SELECT + COUNT(*) AS dashboard_rows, + MIN(stat_date) AS start_date, + MAX(stat_date) AS end_date, + MAX(calculated_at) AS calculated_at +FROM hg_dashboard_daily_stat +WHERE tenant_id = @tenant_id + AND dimension_type IN ('global', 'channel') + AND stat_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 60 DAY) AND CURDATE(); diff --git a/server/storage/data/seeds/20261008_portal_content_initial.sql b/server/storage/data/seeds/20261008_portal_content_initial.sql new file mode 100644 index 0000000..c135b3f --- /dev/null +++ b/server/storage/data/seeds/20261008_portal_content_initial.sql @@ -0,0 +1,205 @@ +-- Olons Admin 门户文本正式初始化 +-- 来源:admin.olons.top「文本管理」,同步日期:2026-10-08。 +-- 适用:MySQL 8.0+ 本地开发环境。 +-- 行为:替换 tenant_id=0 的全部门户文本及版本,仅保留下列 12 条正式内容。 +-- 注意:文本管理不保存图片,来源正文中的 img 标签已移除。 + +SET NAMES utf8mb4; +SET @tenant_id = 0; +SET @admin_id = COALESCE((SELECT id FROM hg_admin_member ORDER BY id LIMIT 1), 1); +SET @now = DATE_ADD(UTC_TIMESTAMP(3), INTERVAL 8 HOUR); + +DROP TEMPORARY TABLE IF EXISTS tmp_portal_content_seed; +CREATE TEMPORARY TABLE tmp_portal_content_seed ( + content_key varchar(64) NOT NULL, + content_type varchar(32) NOT NULL, + title varchar(200) NOT NULL, + summary varchar(500) NOT NULL, + body_html longtext NOT NULL, + sort int NOT NULL, + PRIMARY KEY (content_key) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; + +INSERT INTO tmp_portal_content_seed +(`content_key`,`content_type`,`title`,`summary`,`body_html`,`sort`) +VALUES +( + 'platform_announcement', + 'notice', + '平台公告', + '平台充值时间及安全提醒', + '

尊敬的会员,您好!关于微信转卡/支付宝转卡,异地转账出现风控问题。由于支付宝,微信属于三方支付软件,公信部为防止洗黑钱,有此类问题均属于正常现象,请您不用担心,建议您使用手机银行进行充值,简单快捷,祝您生活愉快!


特别通知!!!

平台充值时间,早上9:00—21:00。期间任何联系您充值的人都是冒充平台客服,为避免资金损失,请在9:00—21:00进行充值。

', + 10 +), +( + 'platform_introduction', + 'about', + '平台简介', + '平台服务协议、使用规则与常见问题说明', + '

本协议阐述适用于您使用本平台所提供的各种工具和服务(下称“服务”)的条款和条件。

一、接受条款

通过网站或 APP 进入即表示您同意与平台订立本协议,并受本协议条款约束。平台可依法调整服务条款;修订内容公布后生效。如您不同意相关变更,应停止使用服务。

二、谁可使用本平台

服务仅供能够根据相关法律订立具有法律约束力合约的个人或公司使用。使用者应年满十八周岁。平台有权依法拒绝或中止向不符合条件的用户提供服务。

三、费用说明

平台不会以押金、保证金等名义私下联系用户索取费用。涉及充值、提现等操作时,请认准平台官方入口与在线客服。

四、用户资料

用户应保证注册、交易及使用服务过程中提交的数据、文本和其他资料真实、准确、完整,并对所提交资料承担相应责任。用户不得提交侵犯他人合法权益或违反法律法规的内容。

五、注册义务

用户应按要求提供真实、准确、完整且反映当前情况的信息,并及时维护更新。若资料不真实、不准确或不完整,平台有权暂停或终止相关服务。

六、账号、密码和保密

用户应妥善保管账号和密码,并对账号下发生的活动负责。如发现账号被未经授权使用,应立即通知平台,并在每次使用结束后正确退出。

七、信息发布规则

用户提供的信息不得包含欺诈、侵权、违法、淫秽、恶意程序、骚扰、虚假身份或其他不适合发布的内容,不得利用服务收集他人信息或发送垃圾信息。

八、禁止事项

用户不得通过平台发布、购买或销售可能使平台违反法律法规的物品或服务,也不得发布平台认为不适合展示或交易的内容。

九、隐私保护

平台将按照隐私规则处理用户提供的信息。用户主动公开的信息可能被其他用户获取和使用,请谨慎披露个人资料。

十、服务终止

对于违反协议、长期未登录或存在安全风险的账号,平台可依法暂停或终止部分或全部服务,并对相关信息采取必要措施。

十一、责任说明

服务按现状提供。因网络、系统维护、不可抗力或第三方服务造成的中断,平台将在合理范围内及时处理。用户通过服务获取信息或进行操作时,应自行判断并承担相应风险。

十二、订单规则

不同订单类型适用人群及结算规则可能不同。用户接取任务前应阅读订单说明,并在规定时间内完成。团队任务需团队成员按要求共同完成。

十三、常见问题

1. 关于充值:请在“我的—我的钱包”中发起充值,核对转账信息,并按页面要求提交到账凭证。如遇问题请联系在线客服。

2. 关于提现:请先绑定本人有效的提现账户,再在钱包页面提交申请。实际到账时间以支付渠道和平台审核结果为准。

3. 关于任务:请完善真实资料和收货地址,按会员等级、任务规则及系统提示完成订单。

4. 关于订单冻结:未按要求完成的订单可能进入冻结状态,具体处理方式以订单页面和客服说明为准。

5. 关于代理:邀请关系及返佣比例以平台当前规则为准,可在代理页面或联系在线客服查询。

十四、法律适用

用户使用服务时应遵守中华人民共和国大陆地区相关法律法规。本协议部分条款无效的,不影响其他条款的效力。

十五、不可抗力

因自然灾害、战争、政府行为、通信设施故障或其他平台合理控制范围以外的原因导致延迟或无法履约的,平台将在法律允许范围内处理。

', + 20 +), +( + 'task_order_rules', + 'rule', + '抢单规则', + '充值赠送、会员等级及抢单佣金规则', + '

充值赠送金:

充值500赠送20元。

单次充值1888元以上,平台赠送永久白银会员,佣金比例0.02,每天代购20单,额外奖励88元。

单次充值10000元以上,平台赠送永久黄金会员,佣金比例0.022,每天代购30单,额外奖励188元。

单次充值30000元以上,平台赠送永久铂金会员,佣金比例0.03,每天代购40单,额外奖励388元。

单次充值50000元以上,平台赠送永久钻石会员,佣金比例0.035,每天代购50单,额外奖励588元。

单次充值88888元以上,平台赠送永久星耀会员,每天代购50单,额外奖励1888元。

单次充值188888元以上,平台赠送永久至尊会员,每天代购1000单,额外奖励2888元。

', + 30 +), +( + 'agent_cooperation', + 'about', + '代理合作', + '平台代理合作与三级返佣说明', + '

平台代理模式

平台用户可以通过推荐新人成为平台代理,并获得额外的动态奖励。直推一级用户奖励为一级用户每天所得佣金的16%,二级用户奖励为二级用户每天所得佣金的8%,三级用户奖励为三级用户每天所得佣金的4%。

', + 40 +), +( + 'frequently_asked_questions', + 'faq', + '常见问题', + '充值、提现、任务、订单冻结及代理常见问题', + '

温馨提示:同一个人银行卡信息请勿重复注册抢单,经发现将会冻结账号。平台禁止一卡绑定多账户,请勿使用个人多账号。

1. 关于充值

充值请在“我的—我的钱包”界面操作。填写转账人姓名和转账金额,按平台提供的账户完成汇款后,提交转账到账凭证。充值前请仔细核对账户信息,每次充值请以页面或客服提供的最新信息为准。

2. 关于提现

提现前请绑定本人有效的提现信息,在平台工作时间内通过“我的—我的钱包”提交提现申请。实际到账时间以支付渠道及审核结果为准。

3. 关于领取

请在 APP 内完善真实资料和收货地址,并绑定本人有效的银行卡。充值到账后可按会员等级及系统提示参与任务。

4. 关于订单冻结

系统会根据账户情况匹配订单。订单未按要求完成时可能被冻结,具体解冻和处理规则以订单页面及客服说明为准。

5. 关于代理

平台用户推荐新人后可获得相应等级的动态奖励,具体比例以平台当前代理规则为准。

6. 关于运营时间

平台运营时间为每天9:00—21:00,用户可在运营时间内参与任务。订单应在规定时间内完成,如遇问题请及时联系在线客服。

', + 50 +), +( + 'beginner_guide', + 'guide', + '新手指南', + '新用户使用指引', + '

详情请咨询在线客服。充值、提现及平台使用问题均可通过在线客服获取帮助,客服24小时在线。

', + 60 +), +( + 'interest_treasure_rules', + 'interest_rule', + '利息宝规则', + '利息宝转入、收益与转出规则', + '

利息宝用于管理符合条件的账户余额。转入金额、收益计算、可转出时间及限额,以利息宝页面实时展示的规则为准。

操作前请仔细核对金额;如遇收益或转出问题,请联系在线客服处理。

', + 70 +), +( + 'home_ticker_content', + 'home_ticker', + '首页滚动内容', + '首页滚动公告文案', + '

平台充值福利大放送

', + 80 +), +( + 'task_order_notes', + 'order_tip', + '抢单备注', + '抢单时间、资金与信用分注意事项', + '

1. 平台运营时间为每天上午9:00至晚上21:00。

2. 每次充值前请通过官方入口核对最新账户信息,如有疑问请联系在线客服。

3. 领取匹配订单后,请以系统显示“排队成功”为准。

4. 匹配订单时间会根据会员等级有所不同,正常会员通常为0至20分钟。

5. 会员账户需满足页面展示的最低启动资金要求后方可参与。

6. 订单需要在规定时间内完成,请勿超时。

7. 提现需满足平台当前信用分要求,请妥善维护账户信用。

8. 信用分下降时请联系在线客服了解恢复规则。

', + 90 +), +( + 'recharge_campaign', + 'activity', + '充值活动', + '充值赠送与会员奖励活动说明', + '

充值赠送金:

充值500元赠送20元。

单次充值3000元以上,赠送会员7天并额外奖励58元。

单次充值5000元以上,赠送白银会员7天并额外奖励88元。

单次充值10000元以上,赠送黄金会员7天并额外奖励188元。

单次充值30000元以上,赠送铂金会员7天并额外奖励388元。

单次充值50000元以上,赠送钻石会员7天并额外奖励588元。

单次充值88888元以上,赠送星耀会员7天并额外奖励1888元。

活动期间的充值时间、任务时间、会员激活条件和奖励到账规则,以活动页面及平台最新公告为准。

', + 100 +), +( + 'home_popup_content', + 'popup', + '首页弹窗内容', + '首页特别公告及充值安全提醒', + '

特别公告通知

最新推出线下购买充值卡福利。线下购买指定充值卡券后,可在平台按流程兑换;符合活动条件的用户可获得相应奖励。

指定商家包括:大润发、永辉、沃尔玛、中国石化、天虹商场、麦德龙、盒马鲜生、世纪华联、华润万家等。

特别通知:平台充值时间为早上8:00至20:00。期间如有人通过非官方渠道联系您充值,请提高警惕,避免资金损失。

', + 110 +), +( + 'company_qualification', + 'qualification', + '公司资质', + '平台业务模式及合作品牌介绍', + '

多实惠,多乐趣

平台商品大数据中心每天会将需要提高曝光度的优质商家产品发布到平台商城,提供给平台用户进行代购抢单。平台商城货源以主流电商平台商品为主,为商家和用户带来更多优惠与便利。

新国潮,新消费

通过创新的交互体验,将娱乐与商品交易融合,优化传统电商的消费者触达和交互形式,降低营销与交易成本。平台通过产品创新、数据分析和资源支持,与中小企业共同成长,为用户提供更多品质、实惠的国货选择。

合作品牌

平台将持续引入符合业务要求的合作品牌和优质商家,具体合作信息以平台公示为准。

', + 120 +); + +START TRANSACTION; + +-- 先删除当前租户的全部旧版本和文本,避免演示数据或废弃标识残留。 +DELETE v +FROM hg_content_version v +JOIN hg_content c ON c.id = v.content_id +WHERE c.tenant_id = @tenant_id; + +DELETE FROM hg_content WHERE tenant_id = @tenant_id; + +COMMIT; + +-- 初始化环境中重置编号,避免删除演示数据后从旧 ID 继续递增。 +ALTER TABLE hg_content_version AUTO_INCREMENT = 1; +ALTER TABLE hg_content AUTO_INCREMENT = 1; + +START TRANSACTION; + +INSERT INTO hg_content +(`tenant_id`,`content_key`,`content_type`,`title`,`published_version_id`,`publish_status`,`published_at`,`sort`,`version`,`remark`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT + @tenant_id, + seed.content_key, + seed.content_type, + seed.title, + 0, + 3, + @now, + seed.sort, + 0, + '原后台文本正式初始化', + @admin_id, + @admin_id, + @now, + @now +FROM tmp_portal_content_seed seed +ORDER BY seed.sort; + +INSERT INTO hg_content_version +(`tenant_id`,`content_id`,`version_no`,`title`,`summary`,`body_html`,`body_text`,`cover_url`,`asset_ids`,`publish_status`,`effective_at`,`approval_request_id`,`created_by`,`created_at`) +SELECT + @tenant_id, + content.id, + 1, + seed.title, + seed.summary, + seed.body_html, + TRIM(REPLACE(REGEXP_REPLACE(seed.body_html, '<[^>]+>', ' '), ' ', ' ')), + '', + JSON_ARRAY(), + 3, + @now, + 0, + @admin_id, + @now +FROM tmp_portal_content_seed seed +JOIN hg_content content + ON content.tenant_id = @tenant_id + AND content.content_key = seed.content_key; + +UPDATE hg_content c +JOIN hg_content_version v + ON v.content_id = c.id + AND v.version_no = 1 +SET c.published_version_id = v.id +WHERE c.tenant_id = @tenant_id; + +COMMIT; + +DROP TEMPORARY TABLE IF EXISTS tmp_portal_content_seed; + +SELECT + c.id, + c.content_key, + c.content_type, + c.title, + c.publish_status, + v.version_no, + CHAR_LENGTH(v.body_text) AS body_text_length +FROM hg_content c +JOIN hg_content_version v ON v.id = c.published_version_id +WHERE c.tenant_id = @tenant_id +ORDER BY c.sort, c.id; diff --git a/server/storage/data/seeds/20261009_member_level_initial.sql b/server/storage/data/seeds/20261009_member_level_initial.sql new file mode 100644 index 0000000..7145969 --- /dev/null +++ b/server/storage/data/seeds/20261009_member_level_initial.sql @@ -0,0 +1,66 @@ +-- 会员等级初始化数据 +-- 来源:admin.olons.top 会员等级列表(2026-10-09) +-- 金额统一转换为分;佣金比例统一转换为万分比。 +-- 脚本可重复执行,并兼容早期本地演示等级编码。 + +SET NAMES utf8mb4; +SET @tenant_id = 0; +SET @admin_id = COALESCE((SELECT id FROM hg_admin_member ORDER BY id LIMIT 1), 1); +SET @now = NOW(3); + +START TRANSACTION; + +-- 复用已有演示等级,避免会员、任务等关联关系失效。 +UPDATE hg_app_member_level SET level_code='VIP2',name='白银会员' WHERE tenant_id=@tenant_id AND level_code='DEMO_VIP2'; +UPDATE hg_app_member_level SET level_code='VIP3',name='黄金会员' WHERE tenant_id=@tenant_id AND level_code='DEMO_VIP3'; +UPDATE hg_app_member_level SET level_code='VIP4',name='铂金会员' WHERE tenant_id=@tenant_id AND level_code='DEMO_VIP_DISABLED'; + +INSERT INTO hg_app_member_level +(`tenant_id`,`level_code`,`name`,`icon_attachment_id`,`icon_url`,`current_version_id`,`member_count`,`status`,`sort`,`remark`,`created_by`,`updated_by`,`created_at`,`updated_at`,`deleted_at`) +SELECT @tenant_id,x.level_code,x.name,0,'',0,0,1,x.sort,'原管理系统会员等级初始化',@admin_id,@admin_id,@now,@now,NULL +FROM ( + SELECT 'VIP1' level_code,'普通会员' name,10 sort + UNION ALL SELECT 'VIP2','白银会员',20 + UNION ALL SELECT 'VIP3','黄金会员',30 + UNION ALL SELECT 'VIP4','铂金会员',40 + UNION ALL SELECT 'VIP5','钻石会员',50 + UNION ALL SELECT 'VIP6','星耀会员',60 + UNION ALL SELECT 'VIP7','至尊会员',70 +) x +ON DUPLICATE KEY UPDATE + `name`=VALUES(`name`),`icon_attachment_id`=0,`icon_url`='',`status`=1,`sort`=VALUES(`sort`), + `remark`=VALUES(`remark`),`updated_by`=@admin_id,`updated_at`=@now,`deleted_at`=NULL,`deleted_by`=0; + +INSERT INTO hg_app_member_level_version +(`tenant_id`,`level_id`,`version_no`,`upgrade_amount`,`gift_amount`,`daily_order_limit`,`commission_rate`,`daily_withdraw_limit`,`rule_json`,`publish_status`,`effective_at`,`published_at`,`approval_request_id`,`base_version_id`,`version`,`remark`,`created_by`,`updated_by`,`created_at`,`updated_at`) +SELECT @tenant_id,l.id,1,x.upgrade_amount,x.gift_amount,x.daily_order_limit,x.commission_rate,x.daily_withdraw_limit, + JSON_OBJECT('source','admin.olons.top','initialized',TRUE),3,NULL,@now,0,0,0,'原管理系统会员等级初始化',@admin_id,@admin_id,@now,@now +FROM hg_app_member_level l +JOIN ( + SELECT 'VIP1' level_code,50000 upgrade_amount,2000 gift_amount,10 daily_order_limit,180 commission_rate,4 daily_withdraw_limit + UNION ALL SELECT 'VIP2',188800,8800,20,200,5 + UNION ALL SELECT 'VIP3',1000000,18800,30,220,10 + UNION ALL SELECT 'VIP4',3000000,38800,40,300,15 + UNION ALL SELECT 'VIP5',5000000,58800,50,350,20 + UNION ALL SELECT 'VIP6',8888800,188800,80,400,100 + UNION ALL SELECT 'VIP7',18888800,288800,1000,500,100 +) x ON x.level_code=l.level_code +WHERE l.tenant_id=@tenant_id +ON DUPLICATE KEY UPDATE + `upgrade_amount`=VALUES(`upgrade_amount`),`gift_amount`=VALUES(`gift_amount`), + `daily_order_limit`=VALUES(`daily_order_limit`),`commission_rate`=VALUES(`commission_rate`), + `daily_withdraw_limit`=VALUES(`daily_withdraw_limit`),`rule_json`=VALUES(`rule_json`), + `publish_status`=3,`effective_at`=NULL,`published_at`=@now,`approval_request_id`=0, + `remark`=VALUES(`remark`),`updated_by`=@admin_id,`updated_at`=@now; + +UPDATE hg_app_member_level l +JOIN hg_app_member_level_version v ON v.level_id=l.id AND v.version_no=1 +SET l.current_version_id=v.id,l.updated_by=@admin_id,l.updated_at=@now +WHERE l.tenant_id=@tenant_id AND l.level_code IN ('VIP1','VIP2','VIP3','VIP4','VIP5','VIP6','VIP7'); + +UPDATE hg_app_member_level l +SET l.member_count=(SELECT COUNT(*) FROM hg_app_member m WHERE m.level_id=l.id AND m.deleted_at IS NULL) +WHERE l.tenant_id=@tenant_id AND l.level_code IN ('VIP1','VIP2','VIP3','VIP4','VIP5','VIP6','VIP7'); + +COMMIT; + 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..5add2a5 --- /dev/null +++ b/server/utility/encrypt/aes.go @@ -0,0 +1,42 @@ +// 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..52e8f63 --- /dev/null +++ b/server/utility/encrypt/encrypt.go @@ -0,0 +1,29 @@ +// 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/encrypt/field.go b/server/utility/encrypt/field.go new file mode 100644 index 0000000..7aa6ada --- /dev/null +++ b/server/utility/encrypt/field.go @@ -0,0 +1,130 @@ +package encrypt + +import ( + "context" + "crypto/aes" + "crypto/cipher" + "crypto/hmac" + "crypto/rand" + "crypto/sha256" + "encoding/base64" + "encoding/hex" + "io" + "strings" + + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" +) + +func fieldKey(ctx context.Context) ([]byte, error) { + secret := strings.TrimSpace(g.Cfg().MustGet(ctx, "security.dataKey").String()) + if secret == "" { + return nil, gerror.New("敏感字段加密密钥未配置") + } + sum := sha256.Sum256([]byte(secret)) + return sum[:], nil +} + +// EncryptField encrypts one sensitive value with AES-256-GCM and a fresh nonce. +func EncryptField(ctx context.Context, plaintext string) (string, error) { + if plaintext == "" { + return "", nil + } + key, err := fieldKey(ctx) + if err != nil { + return "", err + } + block, err := aes.NewCipher(key) + if err != nil { + return "", gerror.Wrap(err, "初始化敏感字段加密失败") + } + gcm, err := cipher.NewGCM(block) + if err != nil { + return "", gerror.Wrap(err, "初始化敏感字段加密失败") + } + nonce := make([]byte, gcm.NonceSize()) + if _, err = io.ReadFull(rand.Reader, nonce); err != nil { + return "", gerror.Wrap(err, "生成敏感字段随机数失败") + } + sealed := gcm.Seal(nonce, nonce, []byte(plaintext), nil) + return base64.RawURLEncoding.EncodeToString(sealed), nil +} + +func DecryptField(ctx context.Context, encoded string) (string, error) { + if encoded == "" { + return "", nil + } + key, err := fieldKey(ctx) + if err != nil { + return "", err + } + raw, err := base64.RawURLEncoding.DecodeString(encoded) + if err != nil { + return "", gerror.Wrap(err, "敏感字段密文格式错误") + } + block, err := aes.NewCipher(key) + if err != nil { + return "", err + } + gcm, err := cipher.NewGCM(block) + if err != nil { + return "", err + } + if len(raw) < gcm.NonceSize() { + return "", gerror.New("敏感字段密文不完整") + } + plain, err := gcm.Open(nil, raw[:gcm.NonceSize()], raw[gcm.NonceSize():], nil) + if err != nil { + return "", gerror.Wrap(err, "敏感字段解密失败") + } + return string(plain), nil +} + +// HashField creates a deterministic, non-reversible lookup key with a secret pepper. +func HashField(ctx context.Context, value string) (string, error) { + key, err := fieldKey(ctx) + if err != nil { + return "", err + } + h := hmac.New(sha256.New, key) + _, _ = h.Write([]byte(strings.TrimSpace(value))) + return hex.EncodeToString(h.Sum(nil)), nil +} + +func MaskMobile(value string) string { + value = strings.TrimSpace(value) + if len(value) < 7 { + return "***" + } + return value[:3] + "****" + value[len(value)-4:] +} + +func MaskName(value string) string { + runes := []rune(strings.TrimSpace(value)) + if len(runes) == 0 { + return "" + } + if len(runes) == 1 { + return "*" + } + return string(runes[0]) + strings.Repeat("*", len(runes)-1) +} + +func MaskAccount(value string) string { + value = strings.TrimSpace(value) + if len(value) <= 2 { + return "****" + } + if len(value) <= 8 { + return "****" + value[len(value)-2:] + } + return value[:4] + strings.Repeat("*", len(value)-8) + value[len(value)-4:] +} + +func MaskAddress(value string) string { + runes := []rune(strings.TrimSpace(value)) + if len(runes) <= 6 { + return "******" + } + return string(runes[:6]) + "****" +} diff --git a/server/utility/encrypt/field_test.go b/server/utility/encrypt/field_test.go new file mode 100644 index 0000000..9f2a138 --- /dev/null +++ b/server/utility/encrypt/field_test.go @@ -0,0 +1,15 @@ +package encrypt + +import "testing" + +func TestMasking(t *testing.T) { + if got := MaskMobile("13800000001"); got != "138****0001" { + t.Fatalf("mobile mask: %s", got) + } + if got := MaskName("测试会员"); got != "测***" { + t.Fatalf("name mask: %s", got) + } + if got := MaskAccount("6222020202020202001"); got != "6222***********2001" { + t.Fatalf("account mask: %s", got) + } +} 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/tools/__pycache__/build_reference_prd.cpython-312.pyc b/tools/__pycache__/build_reference_prd.cpython-312.pyc deleted file mode 100644 index 57e414d..0000000 Binary files a/tools/__pycache__/build_reference_prd.cpython-312.pyc and /dev/null differ