diff --git a/_sql/中国行政区域数据/README.md b/_sql/中国行政区域数据/README.md
new file mode 100644
index 00000000..c35c70fb
--- /dev/null
+++ b/_sql/中国行政区域数据/README.md
@@ -0,0 +1,9 @@
+sys_area.sql: https://pan.xiaonuo.vip/#s/65K_IzOw
+
+sys_area_kingbase8_r3.dmp: https://pan.xiaonuo.vip/#s/65K_UJFQ
+
+sys_area_mssql.sql: https://pan.xiaonuo.vip/#s/65K_gwMA
+
+sys_area_oracle.sql: https://pan.xiaonuo.vip/#s/65K_nkaQ
+
+sys_area_postgresql.sql: https://pan.xiaonuo.vip/#s/65K_vyrg
\ No newline at end of file
diff --git a/_sql/数据库文件/snowy-pub-mssql.sql b/_sql/数据库文件/snowy-pub-mssql.sql
index eb3fc232..96593de6 100644
--- a/_sql/数据库文件/snowy-pub-mssql.sql
+++ b/_sql/数据库文件/snowy-pub-mssql.sql
@@ -121,6 +121,119 @@ GO
INSERT INTO [dbo].[SYS_APP] ([ID], [NAME], [CODE], [ACTIVE], [STATUS], [CREATE_TIME], [CREATE_USER], [UPDATE_TIME], [UPDATE_USER]) VALUES (N'1342445032647098369', N'系统工具', N'system_tool', N'N', N'0', N'2020-12-25 20:20:12', N'1265476890672672808', NULL, NULL)
GO
+-- ----------------------------
+-- Table structure for SYS_AREA
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[SYS_AREA]') AND type IN ('U'))
+ DROP TABLE [dbo].[SYS_AREA]
+GO
+
+CREATE TABLE [dbo].[SYS_AREA] (
+ [ID] bigint NOT NULL,
+ [LEVEL_CODE] tinyint,
+ [PARENT_CODE] nvarchar(20) COLLATE Chinese_PRC_CI_AS,
+ [AREA_CODE] nvarchar(20) COLLATE Chinese_PRC_CI_AS,
+ [ZIP_CODE] nvarchar(6) COLLATE Chinese_PRC_CI_AS,
+ [CITY_CODE] nvarchar(6) COLLATE Chinese_PRC_CI_AS,
+ [NAME] nvarchar(50) COLLATE Chinese_PRC_CI_AS,
+ [SHORT_NAME] nvarchar(50) COLLATE Chinese_PRC_CI_AS,
+ [MERGER_NAME] nvarchar(50) COLLATE Chinese_PRC_CI_AS,
+ [PINYIN] nvarchar(30) COLLATE Chinese_PRC_CI_AS,
+ [LNG] decimal(10,6),
+ [LAT] decimal(10,6)
+)
+GO
+
+ALTER TABLE [dbo].[SYS_AREA] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+ 'MS_Description', N'层级',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'SYS_AREA',
+ 'COLUMN', N'LEVEL_CODE'
+GO
+
+EXEC sp_addextendedproperty
+ 'MS_Description', N'父级行政代码',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'SYS_AREA',
+ 'COLUMN', N'PARENT_CODE'
+GO
+
+EXEC sp_addextendedproperty
+ 'MS_Description', N'行政代码',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'SYS_AREA',
+ 'COLUMN', N'AREA_CODE'
+GO
+
+EXEC sp_addextendedproperty
+ 'MS_Description', N'邮政编码',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'SYS_AREA',
+ 'COLUMN', N'ZIP_CODE'
+GO
+
+EXEC sp_addextendedproperty
+ 'MS_Description', N'区号',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'SYS_AREA',
+ 'COLUMN', N'CITY_CODE'
+GO
+
+EXEC sp_addextendedproperty
+ 'MS_Description', N'名称',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'SYS_AREA',
+ 'COLUMN', N'NAME'
+GO
+
+EXEC sp_addextendedproperty
+ 'MS_Description', N'简称',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'SYS_AREA',
+ 'COLUMN', N'SHORT_NAME'
+GO
+
+EXEC sp_addextendedproperty
+ 'MS_Description', N'组合名',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'SYS_AREA',
+ 'COLUMN', N'MERGER_NAME'
+GO
+
+EXEC sp_addextendedproperty
+ 'MS_Description', N'拼音',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'SYS_AREA',
+ 'COLUMN', N'PINYIN'
+GO
+
+EXEC sp_addextendedproperty
+ 'MS_Description', N'经度',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'SYS_AREA',
+ 'COLUMN', N'LNG'
+GO
+
+EXEC sp_addextendedproperty
+ 'MS_Description', N'纬度',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'SYS_AREA',
+ 'COLUMN', N'LAT'
+GO
+
+EXEC sp_addextendedproperty
+ 'MS_Description', N'中国行政地区表',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'SYS_AREA'
+GO
+
+
+-- ----------------------------
+-- Records of SYS_AREA
+-- ----------------------------
-- ----------------------------
-- Table structure for SYS_CODE_GENERATE
@@ -2158,6 +2271,15 @@ GO
INSERT INTO [dbo].[SYS_MENU] ([ID], [PID], [PIDS], [NAME], [CODE], [TYPE], [ICON], [ROUTER], [COMPONENT], [PERMISSION], [APPLICATION], [OPEN_TYPE], [VISIBLE], [LINK], [REDIRECT], [WEIGHT], [SORT], [REMARK], [STATUS], [CREATE_TIME], [CREATE_USER], [UPDATE_TIME], [UPDATE_USER]) VALUES (N'1264622039642256711', N'1264622039642256621', N'[0],[1264622039642256611],[1264622039642256621],', N'定时任务关闭', N'sys_timers_mgr_stop', N'2', NULL, NULL, NULL, N'sysTimers:stop', N'system', N'0', N'Y', NULL, NULL, N'1', N'100', NULL, N'0', N'2020-07-01 17:22:43', N'1265476890672672808', NULL, NULL)
GO
+INSERT INTO [dbo].[SYS_MENU] ([ID], [PID], [PIDS], [NAME], [CODE], [TYPE], [ICON], [ROUTER], [COMPONENT], [PERMISSION], [APPLICATION], [OPEN_TYPE], [VISIBLE], [LINK], [REDIRECT], [WEIGHT], [SORT], [REMARK], [STATUS], [CREATE_TIME], [CREATE_USER], [UPDATE_TIME], [UPDATE_USER]) VALUES (N'1264622039642256721', N'0', N'[0],', N'区域管理', N'sys_area', N'0', N'environment', N'/area', N'PageView', NULL, N'system', N'1', N'Y', NULL, NULL, N'1', N'100', NULL, N'0', N'2020-07-01 17:17:20', N'1265476890672672808', NULL, NULL)
+GO
+
+INSERT INTO [dbo].[SYS_MENU] ([ID], [PID], [PIDS], [NAME], [CODE], [TYPE], [ICON], [ROUTER], [COMPONENT], [PERMISSION], [APPLICATION], [OPEN_TYPE], [VISIBLE], [LINK], [REDIRECT], [WEIGHT], [SORT], [REMARK], [STATUS], [CREATE_TIME], [CREATE_USER], [UPDATE_TIME], [UPDATE_USER]) VALUES (N'1264622039642256731', N'1264622039642256721', N'[0],[1264622039642256721],', N'系统区域', N'sys_area_mgr', N'1', NULL, N'/area', N'system/area/index', NULL, N'system', N'1', N'Y', NULL, NULL, N'1', N'100', NULL, N'0', N'2020-07-01 17:18:53', N'1265476890672672808', NULL, NULL)
+GO
+
+INSERT INTO [dbo].[SYS_MENU] ([ID], [PID], [PIDS], [NAME], [CODE], [TYPE], [ICON], [ROUTER], [COMPONENT], [PERMISSION], [APPLICATION], [OPEN_TYPE], [VISIBLE], [LINK], [REDIRECT], [WEIGHT], [SORT], [REMARK], [STATUS], [CREATE_TIME], [CREATE_USER], [UPDATE_TIME], [UPDATE_USER]) VALUES (N'1264622039642256741', N'1264622039642256731', N'[0],[1264622039642256721],[1264622039642256731],', N'系统区域列表', N'sys_area_mgr_list', N'2', NULL, NULL, NULL, N'sysArea:list', N'system', N'0', N'Y', NULL, NULL, N'1', N'100', NULL, N'0', N'2020-07-01 17:19:43', N'1265476890672672808', NULL, NULL)
+GO
+
INSERT INTO [dbo].[SYS_MENU] ([ID], [PID], [PIDS], [NAME], [CODE], [TYPE], [ICON], [ROUTER], [COMPONENT], [PERMISSION], [APPLICATION], [OPEN_TYPE], [VISIBLE], [LINK], [REDIRECT], [WEIGHT], [SORT], [REMARK], [STATUS], [CREATE_TIME], [CREATE_USER], [UPDATE_TIME], [UPDATE_USER]) VALUES (N'1342445437296771074', N'0', N'[0],', N'代码生成', N'code_gen', N'1', N'thunderbolt', N'/codeGenerate/index', N'gen/codeGenerate/index', N'', N'system_tool', N'1', N'Y', NULL, N'', N'1', N'100', N'代码生成', N'0', N'2020-12-25 20:21:48', N'1265476890672672808', NULL, NULL)
GO
@@ -4306,6 +4428,29 @@ WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW
ON [PRIMARY]
GO
+-- ----------------------------
+-- Indexes structure for table SYS_AREA
+-- ----------------------------
+CREATE UNIQUE NONCLUSTERED INDEX [UK_CODE]
+ON [dbo].[SYS_AREA] (
+ [AREA_CODE] ASC
+)
+GO
+
+CREATE NONCLUSTERED INDEX [IDX_PARENT_CODE]
+ON [dbo].[SYS_AREA] (
+ [PARENT_CODE] ASC
+)
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table SYS_AREA
+-- ----------------------------
+ALTER TABLE [dbo].[SYS_AREA] ADD CONSTRAINT [PK__SYS_AREA__3214EC27872379CC] PRIMARY KEY CLUSTERED ([ID])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+ON [PRIMARY]
+GO
-- ----------------------------
-- Primary Key structure for table SYS_CODE_GENERATE
diff --git a/_sql/数据库文件/snowy-pub-oracle.sql b/_sql/数据库文件/snowy-pub-oracle.sql
index 21ab98a5..34956c87 100644
--- a/_sql/数据库文件/snowy-pub-oracle.sql
+++ b/_sql/数据库文件/snowy-pub-oracle.sql
@@ -66,6 +66,59 @@ INSERT INTO "SNOWY-PUB-ORACLE"."SYS_APP" VALUES ('1265476890672672821', '系统
INSERT INTO "SNOWY-PUB-ORACLE"."SYS_APP" VALUES ('1265476890672672822', '业务应用', 'business', 'N', '2', TO_DATE('2020-03-26 08:40:33', 'SYYYY-MM-DD HH24:MI:SS'), '1265476890672672808', TO_DATE('2020-09-23 22:00:01', 'SYYYY-MM-DD HH24:MI:SS'), '1265476890672672808');
INSERT INTO "SNOWY-PUB-ORACLE"."SYS_APP" VALUES ('1342445032647098369', '系统工具', 'system_tool', 'N', '0', TO_DATE('2020-12-25 20:20:12', 'SYYYY-MM-DD HH24:MI:SS'), '1265476890672672808', NULL, NULL);
+-- ----------------------------
+-- Table structure for SYS_AREA
+-- ----------------------------
+DROP TABLE "SNOWY-PUB-ORACLE"."SYS_AREA";
+CREATE TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" (
+ "ID" NUMBER(20,0) NOT NULL,
+ "LEVEL_CODE" NUMBER(4,0),
+ "PARENT_CODE" NVARCHAR2(20),
+ "AREA_CODE" NVARCHAR2(20),
+ "ZIP_CODE" NVARCHAR2(6),
+ "CITY_CODE" NVARCHAR2(6),
+ "NAME" NVARCHAR2(50),
+ "SHORT_NAME" NVARCHAR2(50),
+ "MERGER_NAME" NVARCHAR2(50),
+ "PINYIN" NVARCHAR2(30),
+ "LNG" NUMBER,
+ "LAT" NUMBER
+)
+ TABLESPACE "SYSTEM"
+ LOGGING
+ NOCOMPRESS
+ PCTFREE 10
+ INITRANS 1
+ STORAGE (
+ INITIAL 65536
+ NEXT 1048576
+ MINEXTENTS 1
+ MAXEXTENTS 2147483645
+ FREELISTS 1
+ FREELIST GROUPS 1
+ BUFFER_POOL DEFAULT
+ )
+ PARALLEL 1
+ NOCACHE
+ DISABLE ROW MOVEMENT
+;
+COMMENT ON COLUMN "SNOWY-PUB-ORACLE"."SYS_AREA"."LEVEL_CODE" IS '层级';
+COMMENT ON COLUMN "SNOWY-PUB-ORACLE"."SYS_AREA"."PARENT_CODE" IS '父级行政代码';
+COMMENT ON COLUMN "SNOWY-PUB-ORACLE"."SYS_AREA"."AREA_CODE" IS '行政代码';
+COMMENT ON COLUMN "SNOWY-PUB-ORACLE"."SYS_AREA"."ZIP_CODE" IS '邮政编码';
+COMMENT ON COLUMN "SNOWY-PUB-ORACLE"."SYS_AREA"."CITY_CODE" IS '区号';
+COMMENT ON COLUMN "SNOWY-PUB-ORACLE"."SYS_AREA"."NAME" IS '名称';
+COMMENT ON COLUMN "SNOWY-PUB-ORACLE"."SYS_AREA"."SHORT_NAME" IS '简称';
+COMMENT ON COLUMN "SNOWY-PUB-ORACLE"."SYS_AREA"."MERGER_NAME" IS '组合名';
+COMMENT ON COLUMN "SNOWY-PUB-ORACLE"."SYS_AREA"."PINYIN" IS '拼音';
+COMMENT ON COLUMN "SNOWY-PUB-ORACLE"."SYS_AREA"."LNG" IS '经度';
+COMMENT ON COLUMN "SNOWY-PUB-ORACLE"."SYS_AREA"."LAT" IS '纬度';
+COMMENT ON TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" IS '中国行政地区表';
+
+-- ----------------------------
+-- Records of SYS_AREA
+-- ----------------------------
+
-- ----------------------------
-- Table structure for SYS_CODE_GENERATE
-- ----------------------------
@@ -884,6 +937,9 @@ INSERT INTO "SNOWY-PUB-ORACLE"."SYS_MENU" VALUES ('1264622039642256681', '126462
INSERT INTO "SNOWY-PUB-ORACLE"."SYS_MENU" VALUES ('1264622039642256691', '1264622039642256621', '[0],[1264622039642256611],[1264622039642256621],', '定时任务可执行列表', 'sys_timers_mgr_get_action_classes', '2', NULL, NULL, NULL, 'sysTimers:getActionClasses', 'system', '0', 'Y', NULL, NULL, '1', '100', NULL, '0', TO_DATE('2020-07-01 17:22:16', 'SYYYY-MM-DD HH24:MI:SS'), '1265476890672672808', NULL, NULL);
INSERT INTO "SNOWY-PUB-ORACLE"."SYS_MENU" VALUES ('1264622039642256701', '1264622039642256621', '[0],[1264622039642256611],[1264622039642256621],', '定时任务启动', 'sys_timers_mgr_start', '2', NULL, NULL, NULL, 'sysTimers:start', 'system', '0', 'Y', NULL, NULL, '1', '100', NULL, '0', TO_DATE('2020-07-01 17:22:32', 'SYYYY-MM-DD HH24:MI:SS'), '1265476890672672808', NULL, NULL);
INSERT INTO "SNOWY-PUB-ORACLE"."SYS_MENU" VALUES ('1264622039642256711', '1264622039642256621', '[0],[1264622039642256611],[1264622039642256621],', '定时任务关闭', 'sys_timers_mgr_stop', '2', NULL, NULL, NULL, 'sysTimers:stop', 'system', '0', 'Y', NULL, NULL, '1', '100', NULL, '0', TO_DATE('2020-07-01 17:22:43', 'SYYYY-MM-DD HH24:MI:SS'), '1265476890672672808', NULL, NULL);
+INSERT INTO "SNOWY-PUB-ORACLE"."SYS_MENU" VALUES ('1264622039642256721', '0', '[0],', '区域管理', 'sys_area', '0', 'environment', '/area', 'PageView', NULL, 'system', '1', 'Y', NULL, NULL, '1', '100', NULL, '0', TO_DATE('2020-07-01 17:17:20', 'SYYYY-MM-DD HH24:MI:SS'), '1265476890672672808', NULL, NULL);
+INSERT INTO "SNOWY-PUB-ORACLE"."SYS_MENU" VALUES ('1264622039642256731', '1264622039642256721', '[0],[1264622039642256721],', '系统区域', 'sys_area_mgr', '1', NULL, '/area', 'system/area/index', NULL, 'system', '1', 'Y', NULL, NULL, '1', '100', NULL, '0', TO_DATE('2020-07-01 17:18:53', 'SYYYY-MM-DD HH24:MI:SS'), '1265476890672672808', NULL, NULL);
+INSERT INTO "SNOWY-PUB-ORACLE"."SYS_MENU" VALUES ('1264622039642256741', '1264622039642256731', '[0],[1264622039642256721],[1264622039642256731],', '系统区域列表', 'sys_area_mgr_list', '2', NULL, NULL, NULL, 'sysArea:list', 'system', '0', 'Y', NULL, NULL, '1', '100', NULL, '0', TO_DATE('2020-07-01 17:19:43', 'SYYYY-MM-DD HH24:MI:SS'), '1265476890672672808', NULL, NULL);
INSERT INTO "SNOWY-PUB-ORACLE"."SYS_MENU" VALUES ('1342445437296771074', '0', '[0],', '代码生成', 'code_gen', '1', 'thunderbolt', '/codeGenerate/index', 'gen/codeGenerate/index', NULL, 'system_tool', '1', 'Y', NULL, NULL, '1', '100', '代码生成', '0', TO_DATE('2020-12-25 20:21:48', 'SYYYY-MM-DD HH24:MI:SS'), '1265476890672672808', NULL, NULL);
-- ----------------------------
@@ -1823,18 +1879,6 @@ COMMENT ON TABLE "SNOWY-PUB-ORACLE"."SYS_VIS_LOG" IS '系统访问日志表';
-- Records of SYS_VIS_LOG
-- ----------------------------
--- ----------------------------
--- Sequence structure for ACT_EVT_LOG_SEQ
--- ----------------------------
-DROP SEQUENCE "SNOWY-PUB-ORACLE"."ACT_EVT_LOG_SEQ";
-CREATE SEQUENCE "SNOWY-PUB-ORACLE"."ACT_EVT_LOG_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 CACHE 20;
-
--- ----------------------------
--- Sequence structure for ACT_HI_TASK_EVT_LOG_SEQ
--- ----------------------------
-DROP SEQUENCE "SNOWY-PUB-ORACLE"."ACT_HI_TASK_EVT_LOG_SEQ";
-CREATE SEQUENCE "SNOWY-PUB-ORACLE"."ACT_HI_TASK_EVT_LOG_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 CACHE 20;
-
-- ----------------------------
-- Primary Key structure for table SYS_APP
-- ----------------------------
@@ -1848,6 +1892,63 @@ ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_APP" ADD CONSTRAINT "SYS_C008940" CHECK ("NA
ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_APP" ADD CONSTRAINT "SYS_C008941" CHECK ("CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_APP" ADD CONSTRAINT "SYS_C008942" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+-- ----------------------------
+-- Primary Key structure for table SYS_AREA
+-- ----------------------------
+ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" ADD CONSTRAINT "SYS_C008693" PRIMARY KEY ("ID");
+
+-- ----------------------------
+-- Checks structure for table SYS_AREA
+-- ----------------------------
+ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" ADD CONSTRAINT "SYS_C008567" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" ADD CONSTRAINT "SYS_C008572" CHECK ("LEVEL_CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" ADD CONSTRAINT "SYS_C008574" CHECK ("PARENT_CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" ADD CONSTRAINT "SYS_C008577" CHECK ("AREA_CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" ADD CONSTRAINT "SYS_C008580" CHECK ("ZIP_CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" ADD CONSTRAINT "SYS_C008582" CHECK ("CITY_CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" ADD CONSTRAINT "SYS_C008584" CHECK ("NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" ADD CONSTRAINT "SYS_C008585" CHECK ("SHORT_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" ADD CONSTRAINT "SYS_C008586" CHECK ("MERGER_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" ADD CONSTRAINT "SYS_C008587" CHECK ("PINYIN" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" ADD CONSTRAINT "SYS_C008588" CHECK ("LNG" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "SNOWY-PUB-ORACLE"."SYS_AREA" ADD CONSTRAINT "SYS_C008589" CHECK ("LAT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Indexes structure for table SYS_AREA
+-- ----------------------------
+CREATE INDEX "SNOWY-PUB-ORACLE"."IDX_PARENT_CODE"
+ ON "SNOWY-PUB-ORACLE"."SYS_AREA" ("PARENT_CODE" ASC)
+ LOGGING
+ TABLESPACE "SYSTEM"
+ VISIBLE
+ PCTFREE 10
+ INITRANS 2
+ STORAGE (
+ INITIAL 65536
+ NEXT 1048576
+ MINEXTENTS 1
+ MAXEXTENTS 2147483645
+ FREELISTS 1
+ FREELIST GROUPS 1
+ BUFFER_POOL DEFAULT
+ );
+CREATE UNIQUE INDEX "SNOWY-PUB-ORACLE"."UK_CODE"
+ ON "SNOWY-PUB-ORACLE"."SYS_AREA" ("AREA_CODE" ASC)
+ LOGGING
+ TABLESPACE "SYSTEM"
+ VISIBLE
+ PCTFREE 10
+ INITRANS 2
+ STORAGE (
+ INITIAL 65536
+ NEXT 1048576
+ MINEXTENTS 1
+ MAXEXTENTS 2147483645
+ FREELISTS 1
+ FREELIST GROUPS 1
+ BUFFER_POOL DEFAULT
+ );
+
-- ----------------------------
-- Primary Key structure for table SYS_CODE_GENERATE
-- ----------------------------
diff --git a/_sql/数据库文件/snowy-pub-postgresql.sql b/_sql/数据库文件/snowy-pub-postgresql.sql
index 11dc3b0b..61c8fa9c 100644
--- a/_sql/数据库文件/snowy-pub-postgresql.sql
+++ b/_sql/数据库文件/snowy-pub-postgresql.sql
@@ -50,6 +50,42 @@ INSERT INTO "public"."sys_app" VALUES (1265476890672672821, '系统应用', 'sys
INSERT INTO "public"."sys_app" VALUES (1265476890672672822, '业务应用', 'business', 'N', 2, '2020-03-26 08:40:33', 1265476890672672808, '2020-09-23 22:00:01', 1265476890672672808);
INSERT INTO "public"."sys_app" VALUES (1342445032647098369, '系统工具', 'system_tool', 'N', 0, '2020-12-25 20:20:12', 1265476890672672808, NULL, NULL);
+-- ----------------------------
+-- Table structure for sys_area
+-- ----------------------------
+DROP TABLE IF EXISTS "public"."sys_area";
+CREATE TABLE "public"."sys_area" (
+ "id" int8 NOT NULL,
+ "level_code" int2,
+ "parent_code" varchar(20) COLLATE "pg_catalog"."default",
+ "area_code" varchar(20) COLLATE "pg_catalog"."default",
+ "zip_code" varchar(6) COLLATE "pg_catalog"."default",
+ "city_code" varchar(6) COLLATE "pg_catalog"."default",
+ "name" varchar(50) COLLATE "pg_catalog"."default",
+ "short_name" varchar(50) COLLATE "pg_catalog"."default",
+ "merger_name" varchar(50) COLLATE "pg_catalog"."default",
+ "pinyin" varchar(30) COLLATE "pg_catalog"."default",
+ "lng" numeric(10,6),
+ "lat" numeric(10,6)
+)
+;
+COMMENT ON COLUMN "public"."sys_area"."level_code" IS '层级';
+COMMENT ON COLUMN "public"."sys_area"."parent_code" IS '父级行政代码';
+COMMENT ON COLUMN "public"."sys_area"."area_code" IS '行政代码';
+COMMENT ON COLUMN "public"."sys_area"."zip_code" IS '邮政编码';
+COMMENT ON COLUMN "public"."sys_area"."city_code" IS '区号';
+COMMENT ON COLUMN "public"."sys_area"."name" IS '名称';
+COMMENT ON COLUMN "public"."sys_area"."short_name" IS '简称';
+COMMENT ON COLUMN "public"."sys_area"."merger_name" IS '组合名';
+COMMENT ON COLUMN "public"."sys_area"."pinyin" IS '拼音';
+COMMENT ON COLUMN "public"."sys_area"."lng" IS '经度';
+COMMENT ON COLUMN "public"."sys_area"."lat" IS '纬度';
+COMMENT ON TABLE "public"."sys_area" IS '中国行政地区表';
+
+-- ----------------------------
+-- Records of sys_area
+-- ----------------------------
+
-- ----------------------------
-- Table structure for sys_code_generate
-- ----------------------------
@@ -698,6 +734,9 @@ INSERT INTO "public"."sys_menu" VALUES (1264622039642256681, 1264622039642256621
INSERT INTO "public"."sys_menu" VALUES (1264622039642256691, 1264622039642256621, '[0],[1264622039642256611],[1264622039642256621],', '定时任务可执行列表', 'sys_timers_mgr_get_action_classes', 2, NULL, NULL, NULL, 'sysTimers:getActionClasses', 'system', 0, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-07-01 17:22:16', 1265476890672672808, NULL, NULL);
INSERT INTO "public"."sys_menu" VALUES (1264622039642256701, 1264622039642256621, '[0],[1264622039642256611],[1264622039642256621],', '定时任务启动', 'sys_timers_mgr_start', 2, NULL, NULL, NULL, 'sysTimers:start', 'system', 0, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-07-01 17:22:32', 1265476890672672808, NULL, NULL);
INSERT INTO "public"."sys_menu" VALUES (1264622039642256711, 1264622039642256621, '[0],[1264622039642256611],[1264622039642256621],', '定时任务关闭', 'sys_timers_mgr_stop', 2, NULL, NULL, NULL, 'sysTimers:stop', 'system', 0, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-07-01 17:22:43', 1265476890672672808, NULL, NULL);
+INSERT INTO "public"."sys_menu" VALUES (1264622039642256721, 0, '[0],', '区域管理', 'sys_area', 0, 'environment', '/area', 'PageView', NULL, 'system', 1, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-07-01 17:17:20', 1265476890672672808, NULL, NULL);
+INSERT INTO "public"."sys_menu" VALUES (1264622039642256731, 1264622039642256721, '[0],[1264622039642256721],', '系统区域', 'sys_area_mgr', 1, NULL, '/area', 'system/area/index', NULL, 'system', 1, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-07-01 17:18:53', 1265476890672672808, NULL, NULL);
+INSERT INTO "public"."sys_menu" VALUES (1264622039642256741, 1264622039642256731, '[0],[1264622039642256721],[1264622039642256731],', '系统区域列表', 'sys_area_mgr_list', 2, NULL, NULL, NULL, 'sysArea:list', 'system', 0, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-07-01 17:19:43', 1265476890672672808, NULL, NULL);
INSERT INTO "public"."sys_menu" VALUES (1342445437296771074, 0, '[0],', '代码生成', 'code_gen', 1, 'thunderbolt', '/codeGenerate/index', 'gen/codeGenerate/index', '', 'system_tool', 1, 'Y', NULL, '', 1, 100, '代码生成', 0, '2020-12-25 20:21:48', 1265476890672672808, NULL, NULL);
-- ----------------------------
@@ -1387,6 +1426,21 @@ COMMENT ON TABLE "public"."sys_vis_log" IS '系统访问日志表';
-- ----------------------------
ALTER TABLE "public"."sys_app" ADD CONSTRAINT "sys_app_pkey" PRIMARY KEY ("id");
+-- ----------------------------
+-- Indexes structure for table sys_area
+-- ----------------------------
+CREATE INDEX "idx_parent_code" ON "public"."sys_area" USING btree (
+ "parent_code" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
+);
+CREATE INDEX "uk_code" ON "public"."sys_area" USING btree (
+ "area_code" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
+);
+
+-- ----------------------------
+-- Primary Key structure for table sys_area
+-- ----------------------------
+ALTER TABLE "public"."sys_area" ADD CONSTRAINT "sys_area_pkey" PRIMARY KEY ("id");
+
-- ----------------------------
-- Primary Key structure for table sys_code_generate
-- ----------------------------
diff --git a/_sql/数据库文件/snowy-pub.sql b/_sql/数据库文件/snowy-pub.sql
index dc649687..887e5e10 100644
--- a/_sql/数据库文件/snowy-pub.sql
+++ b/_sql/数据库文件/snowy-pub.sql
@@ -41,6 +41,32 @@ INSERT INTO `sys_app` VALUES (1265476890672672821, '系统应用', 'system', 'Y'
INSERT INTO `sys_app` VALUES (1265476890672672822, '业务应用', 'business', 'N', 2, '2020-03-26 08:40:33', 1265476890672672808, '2020-09-23 22:00:01', 1265476890672672808);
INSERT INTO `sys_app` VALUES (1342445032647098369, '系统工具', 'system_tool', 'N', 0, '2020-12-25 20:20:12', 1265476890672672808, NULL, NULL);
+-- ----------------------------
+-- Table structure for sys_area
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_area`;
+CREATE TABLE `sys_area` (
+ `id` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT,
+ `level_code` tinyint(0) UNSIGNED COMMENT '层级',
+ `parent_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '父级行政代码',
+ `area_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '行政代码',
+ `zip_code` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '邮政编码',
+ `city_code` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '区号',
+ `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '名称',
+ `short_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '简称',
+ `merger_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '组合名',
+ `pinyin` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '拼音',
+ `lng` decimal(10, 6) COMMENT '经度',
+ `lat` decimal(10, 6) COMMENT '纬度',
+PRIMARY KEY (`id`) USING BTREE,
+UNIQUE INDEX `uk_code`(`area_code`) USING BTREE,
+INDEX `idx_parent_code`(`parent_code`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 783563 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '中国行政地区表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of sys_area
+-- ----------------------------
+
-- ----------------------------
-- Table structure for sys_code_generate
-- ----------------------------
@@ -564,7 +590,10 @@ INSERT INTO `sys_menu` VALUES (1264622039642256681, 1264622039642256621, '[0],[1
INSERT INTO `sys_menu` VALUES (1264622039642256691, 1264622039642256621, '[0],[1264622039642256611],[1264622039642256621],', '定时任务可执行列表', 'sys_timers_mgr_get_action_classes', 2, NULL, NULL, NULL, 'sysTimers:getActionClasses', 'system', 0, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-07-01 17:22:16', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1264622039642256701, 1264622039642256621, '[0],[1264622039642256611],[1264622039642256621],', '定时任务启动', 'sys_timers_mgr_start', 2, NULL, NULL, NULL, 'sysTimers:start', 'system', 0, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-07-01 17:22:32', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1264622039642256711, 1264622039642256621, '[0],[1264622039642256611],[1264622039642256621],', '定时任务关闭', 'sys_timers_mgr_stop', 2, NULL, NULL, NULL, 'sysTimers:stop', 'system', 0, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-07-01 17:22:43', 1265476890672672808, NULL, NULL);
-INSERT INTO `sys_menu` VALUES (1342445437296771074, 0, '[0],', '代码生成', 'code_gen', 1, 'thunderbolt', '/codeGenerate/index', 'gen/codeGenerate/index', '', 'system_tool', 1, 'Y', NULL, '', 1, 100, '代码生成', 0, '2020-12-25 20:21:48', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_menu` VALUES (1264622039642256721, 0, '[0],', '区域管理', 'sys_area', 0, 'environment', '/area', 'PageView', NULL, 'system', 1, 'Y', NULL, NULL, 1, 100, NULL, 0, '2021-05-19 13:55:40', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_menu` VALUES (1264622039642256731, 1264622039642256721, '[0],[1264622039642256721],', '系统区域', 'sys_area_mgr', 1, NULL, '/area', 'system/area/index', NULL, 'system', 1, 'Y', NULL, NULL, 1, 100, NULL, 0, '2021-05-19 13:57:42', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_menu` VALUES (1264622039642256741, 1264622039642256731, '[0],[1264622039642256721],[1264622039642256731],', '系统区域列表', 'sys_area_mgr_list', 2, NULL, NULL, NULL, 'sysArea:list', 'system', 0, 'Y', NULL, NULL, 1, 100, NULL, 0, '2021-05-19 14:01:39', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_menu` VALUES (1342445437296771074, 0, '[0],', '代码生成', 'code_gen', 1, 'thunderbolt', '/codeGenerate/index', 'gen/codeGenerate/index', NULL, 'system_tool', 1, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-12-25 20:21:48', 1265476890672672808, NULL, NULL);
-- ----------------------------
-- Table structure for sys_notice
diff --git a/_web/src/api/modular/system/areaManage.js b/_web/src/api/modular/system/areaManage.js
new file mode 100644
index 00000000..aba51fca
--- /dev/null
+++ b/_web/src/api/modular/system/areaManage.js
@@ -0,0 +1,16 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 获取区域列表
+ *
+ * @author xuyuxiang
+ * @param parameter
+ * @returns {*}
+ */
+export function getAreaList (parameter) {
+ return axios({
+ url: '/sysArea/list',
+ method: 'get',
+ params: parameter
+ })
+}
diff --git a/_web/src/views/system/area/index.vue b/_web/src/views/system/area/index.vue
new file mode 100644
index 00000000..5b9ef25d
--- /dev/null
+++ b/_web/src/views/system/area/index.vue
@@ -0,0 +1,130 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/controller/SysAreaController.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/controller/SysAreaController.java
new file mode 100644
index 00000000..d796b778
--- /dev/null
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/controller/SysAreaController.java
@@ -0,0 +1,63 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.area.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.core.annotion.BusinessLog;
+import vip.xiaonuo.core.annotion.Permission;
+import vip.xiaonuo.core.enums.LogAnnotionOpTypeEnum;
+import vip.xiaonuo.core.pojo.response.ResponseData;
+import vip.xiaonuo.core.pojo.response.SuccessResponseData;
+import vip.xiaonuo.sys.modular.area.param.SysAreaParam;
+import vip.xiaonuo.sys.modular.area.service.SysAreaService;
+
+import javax.annotation.Resource;
+
+/**
+ * 系统区域控制器
+ *
+ * @author xuyuxiang
+ * @date 2020/3/31 20:49
+ */
+@RestController
+public class SysAreaController {
+
+ @Resource
+ private SysAreaService sysAreaService;
+
+ /**
+ * 系统区域列表(树)
+ *
+ * @author xuyuxiang
+ * @date 2020/3/20 21:23
+ */
+ @Permission
+ @GetMapping("/sysArea/list")
+ @BusinessLog(title = "系统区域_列表", opType = LogAnnotionOpTypeEnum.QUERY)
+ public ResponseData page(SysAreaParam sysAreaParam) {
+ return new SuccessResponseData(sysAreaService.list(sysAreaParam));
+ }
+}
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/entity/SysArea.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/entity/SysArea.java
new file mode 100644
index 00000000..9a9011ff
--- /dev/null
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/entity/SysArea.java
@@ -0,0 +1,126 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.area.entity;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.convert.Convert;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import vip.xiaonuo.core.pojo.base.node.BaseTreeNode;
+
+import java.math.BigDecimal;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 系统区域表
+ *
+ * @author xuyuxiang
+ * @date 2020/3/11 12:08
+ */
+@Data
+@TableName("sys_area")
+public class SysArea implements BaseTreeNode {
+
+ /**
+ * 主键
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 层级
+ */
+ private Integer levelCode;
+
+ /**
+ * 父级行政代码
+ */
+ private String parentCode;
+
+ /**
+ * 行政代码
+ */
+ private String areaCode;
+
+ /**
+ * 邮政编码
+ */
+ private String zipCode;
+
+ /**
+ * 区号
+ */
+ private String cityCode;
+
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 简称
+ */
+ private String shortName;
+
+ /**
+ * 组合名
+ */
+ private String mergerName;
+
+ /**
+ * 拼音
+ */
+ private String pinyin;
+
+ /**
+ * 经度
+ */
+ private BigDecimal lng;
+
+ /**
+ * 纬度
+ */
+ private BigDecimal lat;
+
+ /**
+ * 子节点(表中不存在,用于构造树)
+ */
+ @TableField(exist = false)
+ private List children = CollectionUtil.newArrayList();
+
+ @Override
+ public Long getPid() {
+ return Convert.toLong(parentCode);
+ }
+
+ @Override
+ public void setChildren(List children) {
+ this.children = children;
+ }
+}
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/mapper/SysAreaMapper.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/mapper/SysAreaMapper.java
new file mode 100644
index 00000000..97a371ee
--- /dev/null
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/mapper/SysAreaMapper.java
@@ -0,0 +1,42 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.area.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import vip.xiaonuo.sys.modular.area.entity.SysArea;
+
+import java.util.List;
+
+/**
+ * 系统区域mapper接口
+ *
+ * @author xuyuxiang
+ * @date 2020/3/13 16:12
+ */
+public interface SysAreaMapper extends BaseMapper {
+
+}
\ No newline at end of file
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/mapper/mapping/SysAreaMapper.xml b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/mapper/mapping/SysAreaMapper.xml
new file mode 100644
index 00000000..1d3f0b41
--- /dev/null
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/mapper/mapping/SysAreaMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/param/SysAreaParam.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/param/SysAreaParam.java
new file mode 100644
index 00000000..81b751f8
--- /dev/null
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/param/SysAreaParam.java
@@ -0,0 +1,102 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.area.param;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import vip.xiaonuo.core.pojo.base.param.BaseParam;
+
+import java.math.BigDecimal;
+
+/**
+ * 系统字典值参数
+ *
+ * @author xuyuxiang
+ * @date 2020/3/31 20:32
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SysAreaParam extends BaseParam {
+
+ /**
+ * 主键
+ */
+ private Long id;
+
+ /**
+ * 层级
+ */
+ private Integer levelCode;
+
+ /**
+ * 父级行政代码
+ */
+ private String parentCode;
+
+ /**
+ * 行政代码
+ */
+ private String areaCode;
+
+ /**
+ * 邮政编码
+ */
+ private String zipCode;
+
+ /**
+ * 区号
+ */
+ private String cityCode;
+
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 简称
+ */
+ private String shortName;
+
+ /**
+ * 组合名
+ */
+ private String mergerName;
+
+ /**
+ * 拼音
+ */
+ private String pinyin;
+
+ /**
+ * 经度
+ */
+ private BigDecimal lng;
+
+ /**
+ * 纬度
+ */
+ private BigDecimal lat;
+}
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/service/SysAreaService.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/service/SysAreaService.java
new file mode 100644
index 00000000..2d0bccdc
--- /dev/null
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/service/SysAreaService.java
@@ -0,0 +1,51 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.area.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.core.pojo.page.PageResult;
+import vip.xiaonuo.sys.modular.area.entity.SysArea;
+import vip.xiaonuo.sys.modular.area.param.SysAreaParam;
+
+import java.util.List;
+
+/**
+ * 系统字典值service接口
+ *
+ * @author xuyuxiang
+ * @date 2020/3/13 16:10
+ */
+public interface SysAreaService extends IService {
+
+ /**
+ * 系统区域列表(树表)
+ *
+ * @param sysAreaParam 查询参数
+ * @return 区域树表列表
+ * @author xuyuxiang
+ * @date 2020/3/26 10:19
+ */
+ List list(SysAreaParam sysAreaParam);
+}
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/service/impl/SysAreaServiceImpl.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/service/impl/SysAreaServiceImpl.java
new file mode 100644
index 00000000..050ed0eb
--- /dev/null
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/area/service/impl/SysAreaServiceImpl.java
@@ -0,0 +1,61 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.area.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import vip.xiaonuo.core.pojo.page.PageResult;
+import vip.xiaonuo.sys.modular.area.entity.SysArea;
+import vip.xiaonuo.sys.modular.area.mapper.SysAreaMapper;
+import vip.xiaonuo.sys.modular.area.param.SysAreaParam;
+import vip.xiaonuo.sys.modular.area.service.SysAreaService;
+
+import java.util.List;
+
+/**
+ * 系统区域service接口实现类
+ *
+ * @author xuyuxiang
+ * @date 2020/3/13 16:11
+ */
+@Service
+public class SysAreaServiceImpl extends ServiceImpl implements SysAreaService {
+
+ @Override
+ public List list(SysAreaParam sysAreaParam) {
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+ if(ObjectUtil.isNotNull(sysAreaParam)) {
+ if(ObjectUtil.isNotEmpty(sysAreaParam.getParentCode())) {
+ queryWrapper.eq(SysArea::getParentCode, sysAreaParam.getParentCode());
+ } else {
+ queryWrapper.eq(SysArea::getParentCode, "0");
+ }
+ }
+ return this.list(queryWrapper);
+ }
+}