diff --git a/shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java b/shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java index 0b02381a..29f9e432 100644 --- a/shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java +++ b/shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java @@ -27,6 +27,7 @@ import com.shuili.common.enums.UserStatus; import com.shuili.common.exception.BaseException; import com.shuili.common.mybaitsplus.BeanToWrapper; import com.shuili.common.utils.StringUtils; +import com.shuili.common.utils.ip.IpUtils; import com.shuili.common.utils.password.PasswordUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -73,6 +74,9 @@ public class SysLoginController extends BaseController { @Value("${water.redirect:}") private String redirect; + @Value("${water.portalUrl:}") + private String portalUrl; + // @PostConstruct // public void init() { // String body = "{\"code\":200,\"message\":\"成功\",\"success\":true,\"data\":[{\"id\":\"1777906059376144386\",\"systemId\":\"1767111930266337282\",\"code\":\"85664171b34a4a1d87e8677481815b2e\",\"pid\":\"0\",\"type\":\"1\",\"name\":\"堤防运行管理\",\"compName\":\"\",\"seq\":1,\"icon\":null,\"path\":\"\",\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1777906234719023106\",\"systemId\":\"1767111930266337282\",\"code\":\"e1f7d6d8c76941f1847a8bb4b1cc887d\",\"pid\":\"1777906059376144386\",\"type\":\"1\",\"name\":\"工程状况\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1777906437643644930\",\"systemId\":\"1767111930266337282\",\"code\":\"8f38ba5ba5fb4569b64a7f8e7ee29b96\",\"pid\":\"1777906234719023106\",\"type\":\"1\",\"name\":\"堤防基本信息\",\"compName\":\"\",\"seq\":0,\"icon\":null,\"path\":\"\",\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":\"\",\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1787676937009836033\",\"systemId\":\"1767111930266337282\",\"code\":\"f9fe83c780e54a50a709068c1f8bd07f\",\"pid\":\"1777906234719023106\",\"type\":\"1\",\"name\":\"标识标牌管理\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":\"\",\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":\"\",\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796356902962147329\",\"systemId\":\"1767111930266337282\",\"code\":\"b47e4c4d20484790a2bfc233f8fdf8c5\",\"pid\":\"1777906234719023106\",\"type\":\"1\",\"name\":\"堤防对比页面\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1778008659333296129\",\"systemId\":\"1767111930266337282\",\"code\":\"7e4624ce1e4d49279a59394decdd28ec\",\"pid\":\"1777906059376144386\",\"type\":\"1\",\"name\":\"运行管护\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1778008877365800961\",\"systemId\":\"1767111930266337282\",\"code\":\"d829361aed664acdbaab128c89a6ec7c\",\"pid\":\"1778008659333296129\",\"type\":\"1\",\"name\":\"工程巡检\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1778010832750325762\",\"systemId\":\"1767111930266337282\",\"code\":\"09b65d8be95942d1af76848bdcce964d\",\"pid\":\"1778008877365800961\",\"type\":\"1\",\"name\":\"巡查项目管理\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1787759522595549186\",\"systemId\":\"1767111930266337282\",\"code\":\"92a7893fb8024372ae13f6598deff5ee\",\"pid\":\"1778008877365800961\",\"type\":\"1\",\"name\":\"堤防巡查管理\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796361593309704193\",\"systemId\":\"1767111930266337282\",\"code\":\"0e55e53cf99f417d8a3cb058f7f525ec\",\"pid\":\"1778008877365800961\",\"type\":\"1\",\"name\":\"巡查计划管理\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1787759002698985474\",\"systemId\":\"1767111930266337282\",\"code\":\"0c65b8e973b245f6b7453d64260ae1c9\",\"pid\":\"1778008659333296129\",\"type\":\"1\",\"name\":\"维修养护\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1788050320633442306\",\"systemId\":\"1767111930266337282\",\"code\":\"364f425d93344ffa890c5ec185c28c49\",\"pid\":\"1787759002698985474\",\"type\":\"1\",\"name\":\"维修养护管理\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1788050537583816705\",\"systemId\":\"1767111930266337282\",\"code\":\"3f7cf2a425984fc391100536d472517c\",\"pid\":\"1787759002698985474\",\"type\":\"1\",\"name\":\"维修养护计划\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1788050631255207937\",\"systemId\":\"1767111930266337282\",\"code\":\"29a31582ce3147449b6c0d6718f00d38\",\"pid\":\"1787759002698985474\",\"type\":\"1\",\"name\":\"修养记录\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1787759146978848769\",\"systemId\":\"1767111930266337282\",\"code\":\"a382ef796b234538a18a30cac8b8ec69\",\"pid\":\"1778008659333296129\",\"type\":\"1\",\"name\":\"水雨情测报\",\"compName\":null,\"seq\":4,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1788050827309559810\",\"systemId\":\"1767111930266337282\",\"code\":\"77a5de4ee8fd4e5484b6d96667fd7c6a\",\"pid\":\"1787759146978848769\",\"type\":\"1\",\"name\":\"堤防测报管理\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1788050904765771778\",\"systemId\":\"1767111930266337282\",\"code\":\"8cb6efd0c7f8470481501d244cc00b40\",\"pid\":\"1787759146978848769\",\"type\":\"1\",\"name\":\"水雨情监测\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1788050973346836481\",\"systemId\":\"1767111930266337282\",\"code\":\"8098adaf04344108b714e7bb57a09b2b\",\"pid\":\"1787759146978848769\",\"type\":\"1\",\"name\":\"水雨情智能分析\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1787751440452759554\",\"systemId\":\"1767111930266337282\",\"code\":\"26db00db08f940758527b9a9b99ab387\",\"pid\":\"1778008659333296129\",\"type\":\"1\",\"name\":\"病险工程核查\",\"compName\":null,\"seq\":5,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1788051806314639361\",\"systemId\":\"1767111930266337282\",\"code\":\"54651202e2a24408a5134bea8bf76ea9\",\"pid\":\"1787751440452759554\",\"type\":\"1\",\"name\":\"核查分组管理\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1788051873561915394\",\"systemId\":\"1767111930266337282\",\"code\":\"9d266937ea0b407e84fcc3f9c86335a9\",\"pid\":\"1787751440452759554\",\"type\":\"1\",\"name\":\"核查任务管理\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1788051944596647938\",\"systemId\":\"1767111930266337282\",\"code\":\"ae5a74c25be942669cb148951140aedf\",\"pid\":\"1787751440452759554\",\"type\":\"1\",\"name\":\"工程核查\",\"compName\":null,\"seq\":4,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1788052023667666946\",\"systemId\":\"1767111930266337282\",\"code\":\"e94a0222f17641fd9a27b5ba332076d4\",\"pid\":\"1787751440452759554\",\"type\":\"1\",\"name\":\"核查报告\",\"compName\":null,\"seq\":5,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1787751557121519618\",\"systemId\":\"1767111930266337282\",\"code\":\"43dfa8fc4eb7439790fc83af6fca7166\",\"pid\":\"1787751440452759554\",\"type\":\"1\",\"name\":\"核查项目设置\",\"compName\":null,\"seq\":6,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1788052103099396098\",\"systemId\":\"1767111930266337282\",\"code\":\"5aa53d12455e40bc890365270b0092f3\",\"pid\":\"1787751440452759554\",\"type\":\"1\",\"name\":\"核查任务详情\",\"compName\":null,\"seq\":6,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1788052449314025473\",\"systemId\":\"1767111930266337282\",\"code\":\"7e1a4f8d8e2f4c8da0dfcc2606c59d5b\",\"pid\":\"1787751440452759554\",\"type\":\"1\",\"name\":\"核查项目详情\",\"compName\":null,\"seq\":7,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1788101940381560833\",\"systemId\":\"1767111930266337282\",\"code\":\"9a2d3f85e57045b388c2920fa0d12865\",\"pid\":\"1787751440452759554\",\"type\":\"1\",\"name\":\"核查报告详情\",\"compName\":null,\"seq\":7,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1788102054118502402\",\"systemId\":\"1767111930266337282\",\"code\":\"abe830193d8e425c8fff4bd73f28b442\",\"pid\":\"1787751440452759554\",\"type\":\"1\",\"name\":\"统计分析\",\"compName\":null,\"seq\":8,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1788102125396504577\",\"systemId\":\"1767111930266337282\",\"code\":\"b458e62fb98c4ebf82b8e5e01b7276d7\",\"pid\":\"1787751440452759554\",\"type\":\"1\",\"name\":\"核查填报\",\"compName\":null,\"seq\":8,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1787759230122536962\",\"systemId\":\"1767111930266337282\",\"code\":\"f3f80d66ae8643ff8fece7ca493db7b3\",\"pid\":\"1778008659333296129\",\"type\":\"1\",\"name\":\"害堤动物防治\",\"compName\":null,\"seq\":5,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1788051190733418498\",\"systemId\":\"1767111930266337282\",\"code\":\"69a737719e0f4726a68dfe5231e66733\",\"pid\":\"1787759230122536962\",\"type\":\"1\",\"name\":\"防治计划管理\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1788051260899930114\",\"systemId\":\"1767111930266337282\",\"code\":\"972bb0e3caff4e3b850f4d634cc1950d\",\"pid\":\"1787759230122536962\",\"type\":\"1\",\"name\":\"害堤防治管理\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1788051329787179009\",\"systemId\":\"1767111930266337282\",\"code\":\"958437067f9d45f8988a0a97065525bf\",\"pid\":\"1787759230122536962\",\"type\":\"1\",\"name\":\"防治记录\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1787759339317047298\",\"systemId\":\"1767111930266337282\",\"code\":\"4662f7d0af464f93873e9ebdfbb65595\",\"pid\":\"1778008659333296129\",\"type\":\"1\",\"name\":\"动态监测\",\"compName\":null,\"seq\":7,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1787679637655072769\",\"systemId\":\"1767111930266337282\",\"code\":\"A_df606910974bf69b58079ae2382f87\",\"pid\":\"1777906059376144386\",\"type\":\"1\",\"name\":\"安全管理\",\"compName\":\"\",\"seq\":3,\"icon\":null,\"path\":\"\",\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":\"\",\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1787680058536701954\",\"systemId\":\"1767111930266337282\",\"code\":\"A_20876d87684fd2a2cf2980696b521e\",\"pid\":\"1787679637655072769\",\"type\":\"1\",\"name\":\"申报管理_填报\",\"compName\":null,\"seq\":0,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1787680227923668994\",\"systemId\":\"1767111930266337282\",\"code\":\"A_da55af64c34a1a88a58277f7c46248\",\"pid\":\"1787679637655072769\",\"type\":\"1\",\"name\":\"申报管理_审核\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1787680355745083394\",\"systemId\":\"1767111930266337282\",\"code\":\"A_6c54ef447346cf95f7feffaa1bf927\",\"pid\":\"1787679637655072769\",\"type\":\"1\",\"name\":\"责任人管理\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1787680720162992129\",\"systemId\":\"1767111930266337282\",\"code\":\"A_4c129e452c4f12810f9c8c4cb3c24f\",\"pid\":\"1787679637655072769\",\"type\":\"1\",\"name\":\"确权划界管理\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1787680819937095681\",\"systemId\":\"1767111930266337282\",\"code\":\"A_a93cd4b77c48b495315b4039c9f108\",\"pid\":\"1787679637655072769\",\"type\":\"1\",\"name\":\"安全鉴定管理\",\"compName\":null,\"seq\":4,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1787680965122928641\",\"systemId\":\"1767111930266337282\",\"code\":\"B_47f97fcad14fbcb1871e6e3e4b738c\",\"pid\":\"1787680819937095681\",\"type\":\"1\",\"name\":\"安全鉴定任务\",\"compName\":null,\"seq\":0,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1787681158820081665\",\"systemId\":\"1767111930266337282\",\"code\":\"B_dab940ec0d4a439181417e0fb1abe4\",\"pid\":\"1787680819937095681\",\"type\":\"1\",\"name\":\"安全鉴定清单\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1787681390551183362\",\"systemId\":\"1767111930266337282\",\"code\":\"B_409da6d6724ddf89d34f91458f6e66\",\"pid\":\"1787680819937095681\",\"type\":\"1\",\"name\":\"安全鉴定统计\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1787681586118995969\",\"systemId\":\"1767111930266337282\",\"code\":\"A_a6e92ff2c94545924317cc84c87c46\",\"pid\":\"1787679637655072769\",\"type\":\"1\",\"name\":\"防汛管理\",\"compName\":null,\"seq\":5,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1787681710161342466\",\"systemId\":\"1767111930266337282\",\"code\":\"B_9d9b5b7cc143ff90f9ff9e47742554\",\"pid\":\"1787681586118995969\",\"type\":\"1\",\"name\":\"防汛组织管理\",\"compName\":null,\"seq\":0,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1787681830101659650\",\"systemId\":\"1767111930266337282\",\"code\":\"B_48c79215734567ae4af6ddef0c208e\",\"pid\":\"1787681586118995969\",\"type\":\"1\",\"name\":\"防汛物资管理\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1787681929330503681\",\"systemId\":\"1767111930266337282\",\"code\":\"B_e7fb1b47e1483db66666da075b3540\",\"pid\":\"1787681586118995969\",\"type\":\"1\",\"name\":\"防汛电源管理\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1787682059811106818\",\"systemId\":\"1767111930266337282\",\"code\":\"B_fc57f9e5974ce6911dc8fe9cb8d660\",\"pid\":\"1787681586118995969\",\"type\":\"1\",\"name\":\"防汛预案管理\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1787682182028931074\",\"systemId\":\"1767111930266337282\",\"code\":\"A_9f0759e12849c2bb64247b6f861bc6\",\"pid\":\"1787679637655072769\",\"type\":\"1\",\"name\":\"安全生产\",\"compName\":null,\"seq\":6,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1787682307635752961\",\"systemId\":\"1767111930266337282\",\"code\":\"3b888e5f0f9d466cb7eadc78acb0e716\",\"pid\":\"1777906059376144386\",\"type\":\"1\",\"name\":\"管理保障\",\"compName\":null,\"seq\":4,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1796349678097346562\",\"systemId\":\"1767111930266337282\",\"code\":\"5da6b4fe05874f30b3be684619e61d1a\",\"pid\":\"1787682307635752961\",\"type\":\"1\",\"name\":\"档案管理\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796349753863254017\",\"systemId\":\"1767111930266337282\",\"code\":\"359268934e9143649d9f55cda87ab660\",\"pid\":\"1787682307635752961\",\"type\":\"1\",\"name\":\"经费保障\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796349833353703426\",\"systemId\":\"1767111930266337282\",\"code\":\"e862e75f8ea44698bfbbe805bbac087d\",\"pid\":\"1787682307635752961\",\"type\":\"1\",\"name\":\"标准化建设\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]}]},{\"id\":\"1793556526064021506\",\"systemId\":\"1767111930266337282\",\"code\":\"4820885a4cca4930872d7d7caeb2d802\",\"pid\":\"0\",\"type\":\"1\",\"name\":\"水闸运行管理\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1793575688798810114\",\"systemId\":\"1767111930266337282\",\"code\":\"bc0110fd46034cb78a91256fbc210c05\\t\",\"pid\":\"1793556526064021506\",\"type\":\"1\",\"name\":\"工程状况\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1796349995593576449\",\"systemId\":\"1767111930266337282\",\"code\":\"7f978b73a38b424f94cc500cd6e84d47\",\"pid\":\"1793575688798810114\",\"type\":\"1\",\"name\":\"水闸基本信息\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796350066708000769\",\"systemId\":\"1767111930266337282\",\"code\":\"16a535dc1a6043a88544bc0673d618c6\",\"pid\":\"1793575688798810114\",\"type\":\"1\",\"name\":\"水闸基本信息选项卡\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796350287097704449\",\"systemId\":\"1767111930266337282\",\"code\":\"568ac0d4406f4294b6413006571b178f\",\"pid\":\"1793575688798810114\",\"type\":\"1\",\"name\":\"标识标牌管理\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796350353111855106\",\"systemId\":\"1767111930266337282\",\"code\":\"723784bf1a8a49668ef764ca46b63ece\",\"pid\":\"1793575688798810114\",\"type\":\"1\",\"name\":\"水闸对比页面\",\"compName\":null,\"seq\":4,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1793558653003968514\",\"systemId\":\"1767111930266337282\",\"code\":\"a56aab90c27d4d9bb9f896de8e537944\",\"pid\":\"1793556526064021506\",\"type\":\"1\",\"name\":\"运行管护\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1793559854688841729\",\"systemId\":\"1767111930266337282\",\"code\":\"bc79940eb32443fea3ac016fd224de0a\",\"pid\":\"1793558653003968514\",\"type\":\"1\",\"name\":\"工程巡查\",\"compName\":null,\"seq\":0,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1793560468005138433\",\"systemId\":\"1767111930266337282\",\"code\":\"313252ed616148be88f072f65b8a60b2\",\"pid\":\"1793559854688841729\",\"type\":\"1\",\"name\":\"巡查项目管理\",\"compName\":null,\"seq\":0,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793560522405261313\",\"systemId\":\"1767111930266337282\",\"code\":\"fc2598ec4cd24788a33385bb342271f4\",\"pid\":\"1793559854688841729\",\"type\":\"1\",\"name\":\"巡查路线设置\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793560584002809858\",\"systemId\":\"1767111930266337282\",\"code\":\"1cd0041896bd41dcac9e1cd6d203ccbc\",\"pid\":\"1793559854688841729\",\"type\":\"1\",\"name\":\"巡查计划管理\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793560648876109826\",\"systemId\":\"1767111930266337282\",\"code\":\"528ae03de41149bba0aa3446721cb205\",\"pid\":\"1793559854688841729\",\"type\":\"1\",\"name\":\"巡查项详情\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793560725829005313\",\"systemId\":\"1767111930266337282\",\"code\":\"9ab0791b65c64b189158a1a0098c8244\",\"pid\":\"1793559854688841729\",\"type\":\"1\",\"name\":\"水闸巡查管理\",\"compName\":null,\"seq\":4,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793560772259950593\",\"systemId\":\"1767111930266337282\",\"code\":\"f6f3db8b9a71461487c1d366d5d2e6ba\",\"pid\":\"1793559854688841729\",\"type\":\"1\",\"name\":\"巡查记录\",\"compName\":null,\"seq\":5,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1793559910242398210\",\"systemId\":\"1767111930266337282\",\"code\":\"2d26df05dea643b5842ac12e39f25785\",\"pid\":\"1793558653003968514\",\"type\":\"1\",\"name\":\"维修养护\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1793560855596576770\",\"systemId\":\"1767111930266337282\",\"code\":\"f512341df2a8454e830fd2635e34b1bb\",\"pid\":\"1793559910242398210\",\"type\":\"1\",\"name\":\"维修养护管理\",\"compName\":null,\"seq\":0,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793560912391647234\",\"systemId\":\"1767111930266337282\",\"code\":\"038691476a374368ac1934371a22ed2d\",\"pid\":\"1793559910242398210\",\"type\":\"1\",\"name\":\"维修养护计划\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793560992263778306\",\"systemId\":\"1767111930266337282\",\"code\":\"f3e4f97a9aa8493892e8fbb3eeaa0efe\",\"pid\":\"1793559910242398210\",\"type\":\"1\",\"name\":\"维修养护记录\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1793559961224163329\",\"systemId\":\"1767111930266337282\",\"code\":\"2e2e13824d9c4a81b14314c8bcb307b0\",\"pid\":\"1793558653003968514\",\"type\":\"1\",\"name\":\"调度运用\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1793561162300862466\",\"systemId\":\"1767111930266337282\",\"code\":\"2b74d23af5f5435594b1c12cb573700d\",\"pid\":\"1793559961224163329\",\"type\":\"1\",\"name\":\"调度运用管理\",\"compName\":null,\"seq\":0,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793561202788478977\",\"systemId\":\"1767111930266337282\",\"code\":\"583d8233adc741d3a7610e464a3555ea\",\"pid\":\"1793559961224163329\",\"type\":\"1\",\"name\":\"水闸操作记录\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793561243041214466\",\"systemId\":\"1767111930266337282\",\"code\":\"773200b686d14ed3bdc4f0486229547f\",\"pid\":\"1793559961224163329\",\"type\":\"1\",\"name\":\"调度计划管理\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1793560030723780609\",\"systemId\":\"1767111930266337282\",\"code\":\"966888dd429c42ad87810410e045b988\",\"pid\":\"1793558653003968514\",\"type\":\"1\",\"name\":\"水闸水雨情测报\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1793561372934615041\",\"systemId\":\"1767111930266337282\",\"code\":\"6956f7271aa449aebaafb7cc8a8479da\",\"pid\":\"1793560030723780609\",\"type\":\"1\",\"name\":\"水闸测报管理\",\"compName\":null,\"seq\":0,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793561427758362625\",\"systemId\":\"1767111930266337282\",\"code\":\"9ec49b88c37845729ca18d924c69bb59\",\"pid\":\"1793560030723780609\",\"type\":\"1\",\"name\":\"水闸水雨情智能分析\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1793560081219006466\",\"systemId\":\"1767111930266337282\",\"code\":\"00ac3d79c1ee4993a415e6f793df1593\",\"pid\":\"1793558653003968514\",\"type\":\"1\",\"name\":\"监督检查\",\"compName\":null,\"seq\":4,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1793561584700829698\",\"systemId\":\"1767111930266337282\",\"code\":\"3e82ff82619048c3af822e81f1dc8d42\",\"pid\":\"1793560081219006466\",\"type\":\"1\",\"name\":\"办法管理\",\"compName\":null,\"seq\":0,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793561666753998850\",\"systemId\":\"1767111930266337282\",\"code\":\"ebf0a83ac12b4611b8b04e5bfe35d9a1\",\"pid\":\"1793560081219006466\",\"type\":\"1\",\"name\":\"任务管理\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793561705513562114\",\"systemId\":\"1767111930266337282\",\"code\":\"0e5d2ec8976b4f2a86773a604789fdd0\",\"pid\":\"1793560081219006466\",\"type\":\"1\",\"name\":\"工程管理\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793561746647101442\",\"systemId\":\"1767111930266337282\",\"code\":\"3219e42af6bb45919ecb805626c5a6d9\",\"pid\":\"1793560081219006466\",\"type\":\"1\",\"name\":\"办法项目配置\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793561792214020097\",\"systemId\":\"1767111930266337282\",\"code\":\"67e1cf6a5af643dc8f57b5643f678bbb\",\"pid\":\"1793560081219006466\",\"type\":\"1\",\"name\":\"工程上报\",\"compName\":null,\"seq\":4,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793561887462469633\",\"systemId\":\"1767111930266337282\",\"code\":\"8ae9829895a44194a4e5f42979f0bd88\",\"pid\":\"1793560081219006466\",\"type\":\"1\",\"name\":\"工程报告\",\"compName\":null,\"seq\":6,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793561943481593857\",\"systemId\":\"1767111930266337282\",\"code\":\"f776499a2d70446dbd31c5aff7ebdc0b\",\"pid\":\"1793560081219006466\",\"type\":\"1\",\"name\":\"问题管理\",\"compName\":null,\"seq\":6,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793561987744083969\",\"systemId\":\"1767111930266337282\",\"code\":\"f90eb9f2c7c44413872499de126aa99d\",\"pid\":\"1793560081219006466\",\"type\":\"1\",\"name\":\"任务详情\",\"compName\":null,\"seq\":7,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793562051329732610\",\"systemId\":\"1767111930266337282\",\"code\":\"95be40b74cb04133bd114e573a1364cf\",\"pid\":\"1793560081219006466\",\"type\":\"1\",\"name\":\"统计分析\",\"compName\":null,\"seq\":8,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793562097773260802\",\"systemId\":\"1767111930266337282\",\"code\":\"ecb557f1429d4e7a894fc686f6ba2dcd\",\"pid\":\"1793560081219006466\",\"type\":\"1\",\"name\":\"办法详情\",\"compName\":null,\"seq\":9,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1793560208218337281\",\"systemId\":\"1767111930266337282\",\"code\":\"9643924e57ad464abdfb233614b9a7b5\",\"pid\":\"1793558653003968514\",\"type\":\"1\",\"name\":\"病险工程核查\",\"compName\":null,\"seq\":5,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1793562332624924673\",\"systemId\":\"1767111930266337282\",\"code\":\"4c8de95bf8d44fbaacddff983977d399\",\"pid\":\"1793560208218337281\",\"type\":\"1\",\"name\":\"核查项目设置\",\"compName\":null,\"seq\":0,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793562382641999874\",\"systemId\":\"1767111930266337282\",\"code\":\"93ff2af3fa124749bd21d657f9fa82ad\",\"pid\":\"1793560208218337281\",\"type\":\"1\",\"name\":\"核查分组管理\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793562419392491522\",\"systemId\":\"1767111930266337282\",\"code\":\"57f194c1c0544120b2ec9ee358fe0bd3\",\"pid\":\"1793560208218337281\",\"type\":\"1\",\"name\":\"核查任务管理\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793562454138105857\",\"systemId\":\"1767111930266337282\",\"code\":\"8a2611f560f8481e86dd3e7e2c785b1a\",\"pid\":\"1793560208218337281\",\"type\":\"1\",\"name\":\"工程核查\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793562526506627073\",\"systemId\":\"1767111930266337282\",\"code\":\"bf67c547f2824a74b15c80386ab5181c\",\"pid\":\"1793560208218337281\",\"type\":\"1\",\"name\":\"核查报告管理\",\"compName\":null,\"seq\":4,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793562562900602882\",\"systemId\":\"1767111930266337282\",\"code\":\"e2af6c74c8b1427f83ddb23b888769be\",\"pid\":\"1793560208218337281\",\"type\":\"1\",\"name\":\"核查项目详情\",\"compName\":null,\"seq\":5,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793562605850275842\",\"systemId\":\"1767111930266337282\",\"code\":\"4b874673cedb45dea6e8cd398d1bc073\",\"pid\":\"1793560208218337281\",\"type\":\"1\",\"name\":\"核查报告\",\"compName\":null,\"seq\":6,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793562663601647617\",\"systemId\":\"1767111930266337282\",\"code\":\"98e4ee10e7a8422a8283ecc8764cbcf1\",\"pid\":\"1793560208218337281\",\"type\":\"1\",\"name\":\"核查填报\",\"compName\":null,\"seq\":7,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793562739019427841\",\"systemId\":\"1767111930266337282\",\"code\":\"aa8dfb9b75d444d4900dc078bb7141d9\",\"pid\":\"1793560208218337281\",\"type\":\"1\",\"name\":\"核查任务详情\",\"compName\":null,\"seq\":8,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796355314805714946\",\"systemId\":\"1767111930266337282\",\"code\":\"ff98c8675e57413d965d5408fe5ee5c1\",\"pid\":\"1793560208218337281\",\"type\":\"1\",\"name\":\"统计分析\",\"compName\":null,\"seq\":10,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1793564019007762433\",\"systemId\":\"1767111930266337282\",\"code\":\"06d65eac04b24c82b8b9b6512ddbd6ad\",\"pid\":\"1793558653003968514\",\"type\":\"1\",\"name\":\"动态监测\",\"compName\":null,\"seq\":7,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1796355640325648385\",\"systemId\":\"1767111930266337282\",\"code\":\"0c6db2ab60f44f3e9aed1cf86ef457fa\",\"pid\":\"1793564019007762433\",\"type\":\"1\",\"name\":\"水闸动态监测\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793564131415109633\",\"systemId\":\"1767111930266337282\",\"code\":\"3dfde024752148348cf6173bcb8d3cf5\",\"pid\":\"1793564019007762433\",\"type\":\"1\",\"name\":\"水闸动态监测历史记录\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]}]},{\"id\":\"1793558569512153090\",\"systemId\":\"1767111930266337282\",\"code\":\"50df606910974bf69b58079ae2382f87\",\"pid\":\"1793556526064021506\",\"type\":\"1\",\"name\":\"安全管理\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1793558850358554626\",\"systemId\":\"1767111930266337282\",\"code\":\"2830a8101efe464c9eb5b59e8f46607d\",\"pid\":\"1793558569512153090\",\"type\":\"1\",\"name\":\"填报_申报管理选项卡\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796350471659663361\",\"systemId\":\"1767111930266337282\",\"code\":\"06da55af64c34a1a88a58277f7c46248\",\"pid\":\"1793558569512153090\",\"type\":\"1\",\"name\":\"申报管理_审核\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796350658834673666\",\"systemId\":\"1767111930266337282\",\"code\":\"0744350d7c434546b46fff40882571ae\",\"pid\":\"1793558569512153090\",\"type\":\"1\",\"name\":\"审核_申报管理选项卡\",\"compName\":null,\"seq\":4,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796350728527228929\",\"systemId\":\"1767111930266337282\",\"code\":\"426c54ef447346cf95f7feffaa1bf927\",\"pid\":\"1793558569512153090\",\"type\":\"1\",\"name\":\"责任人管理\",\"compName\":null,\"seq\":5,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796350817366781953\",\"systemId\":\"1767111930266337282\",\"code\":\"384c129e452c4f12810f9c8c4cb3c24f\",\"pid\":\"1793558569512153090\",\"type\":\"1\",\"name\":\"确权划界管理\",\"compName\":null,\"seq\":6,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1793558729612931074\",\"systemId\":\"1767111930266337282\",\"code\":\"1c1124dd8ba64fb0955c2c7e002c6f0f\",\"pid\":\"1793556526064021506\",\"type\":\"1\",\"name\":\"管理保障\",\"compName\":null,\"seq\":4,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1793562953826512898\",\"systemId\":\"1767111930266337282\",\"code\":\"01050a1b09394675a57c611bd34f0024\",\"pid\":\"1793558729612931074\",\"type\":\"1\",\"name\":\"档案管理\",\"compName\":null,\"seq\":0,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793563551414169602\",\"systemId\":\"1767111930266337282\",\"code\":\"29e88591686142e5af0a949f603ecea0\",\"pid\":\"1793558729612931074\",\"type\":\"1\",\"name\":\"经费保障\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1793563593613062145\",\"systemId\":\"1767111930266337282\",\"code\":\"ed21031c6692428ebdaefa7e571e1640\",\"pid\":\"1793558729612931074\",\"type\":\"1\",\"name\":\"标准化建设\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]}]},{\"id\":\"1796367687213985793\",\"systemId\":\"1767111930266337282\",\"code\":\"cb86824acb9347dbbb0dcd90b5fef391\",\"pid\":\"0\",\"type\":\"1\",\"name\":\"智能监管\",\"compName\":null,\"seq\":3,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1796367892026044417\",\"systemId\":\"1767111930266337282\",\"code\":\"9084032ec3f1413daf759c0cc38e1083\",\"pid\":\"1796367687213985793\",\"type\":\"1\",\"name\":\"图层数据配置\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1796368101602832385\",\"systemId\":\"1767111930266337282\",\"code\":\"16f8801ba2e34cb29c09e4829295ba9b\",\"pid\":\"1796367892026044417\",\"type\":\"1\",\"name\":\"资源目录\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796368187032416258\",\"systemId\":\"1767111930266337282\",\"code\":\"61e66dbf6e2247239f68b11a0b3c1456\",\"pid\":\"1796367892026044417\",\"type\":\"1\",\"name\":\"资源目录详情\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]},{\"id\":\"1796368298823200769\",\"systemId\":\"1767111930266337282\",\"code\":\"26214fe3909d490f90b41a509b4ded96\",\"pid\":\"1796367687213985793\",\"type\":\"1\",\"name\":\"工程管理\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":[{\"id\":\"1796368367047749634\",\"systemId\":\"1767111930266337282\",\"code\":\"28e1c4dedeb842498d262c7eb5105cc7\",\"pid\":\"1796368298823200769\",\"type\":\"1\",\"name\":\"运行场景配置\",\"compName\":null,\"seq\":1,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796369347743133698\",\"systemId\":\"1767111930266337282\",\"code\":\"407a0853686043b18bdebc77ea55f4a2\",\"pid\":\"1796368298823200769\",\"type\":\"1\",\"name\":\"运行场景配置详情\",\"compName\":null,\"seq\":2,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null},{\"id\":\"1796373940078194690\",\"systemId\":\"1767111930266337282\",\"code\":\"d53a5d18f41a4a439a7fa686b90e54dc\",\"pid\":\"1796368298823200769\",\"type\":\"1\",\"name\":\"资源目录详情\",\"compName\":null,\"seq\":4,\"icon\":null,\"path\":null,\"visible\":\"1\",\"status\":\"1\",\"permissionCode\":null,\"remark\":null,\"routerMenu\":null,\"iframe\":\"0\",\"extendFields\":null,\"children\":null}]}]}],\"timestamp\":1717387167480}"; @@ -93,6 +97,29 @@ public class SysLoginController extends BaseController { // permissionService.setUserMenuFromPortal("1", menus); // } + @PostMapping("/login-proxy") + @ApiOperation("登陆代理") + public ModelAndView loginProxy(HttpServletRequest httpRequest) { + if (StringUtils.isNotBlank(this.portalUrl)) { + RedirectView redirectView = new RedirectView(this.portalUrl); + return new ModelAndView(redirectView); + } else { + String ip = IpUtils.getIpAddr(httpRequest); + if (IpUtils.UNKNOWN.equals(ip)) { + throw new RuntimeException("获取登陆ip失败"); + } + String loginPath = "#/login"; + if (ip.endsWith("/")) { + ip = ip + loginPath; + } else { + ip = ip + "/" + loginPath; + } + log.debug("重定向地址:{}", ip); + return new ModelAndView(new RedirectView(ip)); + } + } + + @PostMapping("/login") @ApiOperation("登录接口") public AjaxResult login(@RequestBody LoginBody loginBody) { @@ -103,17 +130,6 @@ public class SysLoginController extends BaseController { throw new BaseException("对不起,请输入您的账号!!"); } AjaxResult ajax = AjaxResult.success(); - - // 验证码校验 - //TODO -// String verifyKey = Constants.CAPTCHA_CODE_KEY + loginBody.getUuid(); -// if(!loginBody.getCode().equals(redisCache.getCacheObject(verifyKey))) { -// redisCache.deleteObject(verifyKey); -// AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginBody.getUsername(), Constants.LOGIN_FAIL, "验证码输入错误")); -// throw new BaseException("对不起,您的验证码输入错误"); -// } - - SysUser user = new SysUser(); user.setUserName(loginBody.getUsername()); user.setIsPcUser(YesOrNo.NO); diff --git a/shuili-admin/src/main/resources/config/application-dev.yml b/shuili-admin/src/main/resources/config/application-dev.yml index 3c7357a3..fe21260c 100644 --- a/shuili-admin/src/main/resources/config/application-dev.yml +++ b/shuili-admin/src/main/resources/config/application-dev.yml @@ -171,6 +171,7 @@ ignored: /chunk/*, /error, /login, + /login-proxy, /captchaImage, /system/file/**, /system/user/exportExcel, diff --git a/shuili-common/src/main/java/com/shuili/common/utils/ip/IpUtils.java b/shuili-common/src/main/java/com/shuili/common/utils/ip/IpUtils.java index 5cf0b847..c50c16db 100644 --- a/shuili-common/src/main/java/com/shuili/common/utils/ip/IpUtils.java +++ b/shuili-common/src/main/java/com/shuili/common/utils/ip/IpUtils.java @@ -14,217 +14,219 @@ import java.util.regex.Pattern; /** * 获取IP方法 - * + * * @author shuili */ public class IpUtils { - public static String getIpAddr(HttpServletRequest request) { - if (request == null) { - return "unknown"; - } - String ip = request.getHeader("x-forwarded-for"); - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { - ip = request.getHeader("Proxy-Client-IP"); - } - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { - ip = request.getHeader("X-Forwarded-For"); - } - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { - ip = request.getHeader("WL-Proxy-Client-IP"); - } - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { - ip = request.getHeader("X-Real-IP"); - } - - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { - ip = request.getRemoteAddr(); - } - return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : EscapeUtil.clean(ip); - } - - public static boolean internalIp(String ip) { - byte[] addr = textToNumericFormatV4(ip); - return internalIp(addr) || "127.0.0.1".equals(ip); - } - - private static boolean internalIp(byte[] addr) { - if (StringUtils.isNull(addr) || addr.length < 2) { - return true; - } - final byte b0 = addr[0]; - final byte b1 = addr[1]; - // 10.x.x.x/8 - final byte SECTION_1 = 0x0A; - // 172.16.x.x/12 - final byte SECTION_2 = (byte) 0xAC; - final byte SECTION_3 = (byte) 0x10; - final byte SECTION_4 = (byte) 0x1F; - // 192.168.x.x/16 - final byte SECTION_5 = (byte) 0xC0; - final byte SECTION_6 = (byte) 0xA8; - switch (b0) { - case SECTION_1: - return true; - case SECTION_2: - if (b1 >= SECTION_3 && b1 <= SECTION_4) { - return true; - } - case SECTION_5: - switch (b1) { - case SECTION_6: - return true; - } - default: - return false; - } - } - - /** - * 将IPv4地址转换成字节 - * - * @param text IPv4地址 - * @return byte 字节 - */ - public static byte[] textToNumericFormatV4(String text) { - if (text.length() == 0) { - return null; - } - - byte[] bytes = new byte[4]; - String[] elements = text.split("\\.", -1); - try { - long l; - int i; - switch (elements.length) { - case 1: - l = Long.parseLong(elements[0]); - if ((l < 0L) || (l > 4294967295L)) { - return null; - } - bytes[0] = (byte) (int) (l >> 24 & 0xFF); - bytes[1] = (byte) (int) ((l & 0xFFFFFF) >> 16 & 0xFF); - bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF); - bytes[3] = (byte) (int) (l & 0xFF); - break; - case 2: - l = Integer.parseInt(elements[0]); - if ((l < 0L) || (l > 255L)) { - return null; - } - bytes[0] = (byte) (int) (l & 0xFF); - l = Integer.parseInt(elements[1]); - if ((l < 0L) || (l > 16777215L)) { - return null; - } - bytes[1] = (byte) (int) (l >> 16 & 0xFF); - bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF); - bytes[3] = (byte) (int) (l & 0xFF); - break; - case 3: - for (i = 0; i < 2; ++i) { - l = Integer.parseInt(elements[i]); - if ((l < 0L) || (l > 255L)) { - return null; - } - bytes[i] = (byte) (int) (l & 0xFF); - } - l = Integer.parseInt(elements[2]); - if ((l < 0L) || (l > 65535L)) { - return null; - } - bytes[2] = (byte) (int) (l >> 8 & 0xFF); - bytes[3] = (byte) (int) (l & 0xFF); - break; - case 4: - for (i = 0; i < 4; ++i) { - l = Integer.parseInt(elements[i]); - if ((l < 0L) || (l > 255L)) { - return null; - } - bytes[i] = (byte) (int) (l & 0xFF); - } - break; - default: - return null; - } - } catch (NumberFormatException e) { - return null; - } - return bytes; - } - - public static String getMacByIp(String ip) { - String macAddr = null; - try { - Process process = Runtime.getRuntime().exec("nbtstat -a " + ip); - BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); - Pattern pattern = Pattern.compile("([A-F0-9]{2}-){5}[A-F0-9]{2}"); - Matcher matcher; - for (String strLine = br.readLine(); strLine != null; strLine = br.readLine()) { - matcher = pattern.matcher(strLine); - if (matcher.find()) { - macAddr = matcher.group(); - break; - } - } - } catch (IOException e) { - e.printStackTrace(); - } - System.out.println(macAddr); - return macAddr; - } - - public static String getHostIp() { - try { - return InetAddress.getLocalHost().getHostAddress(); - } catch (UnknownHostException e) { - } - return "127.0.0.1"; - } - - public static String getHostName() { - try { - return InetAddress.getLocalHost().getHostName(); - } catch (UnknownHostException e) { - } - return "未知"; - } - - /* - * 验证IP是否属于某个IP段 - * - * ipSection IP段(以'-'分隔) ip 所验证的IP号码 - * - */ - - public static boolean ipExistsInRange(String ip, String ipStrat, String ipEnd) { - ip = ip.trim(); - String beginIP = ipStrat.trim(); - String endIP = ipEnd.trim(); - return getIp2long(beginIP) <= getIp2long(ip) && getIp2long(ip) <= getIp2long(endIP); - - } - - public static long getIp2long(String ip) { - ip = ip.trim(); - String[] ips = ip.split("\\."); - long ip2long = 0L; - for (int i = 0; i < 4; ++i) { - ip2long = ip2long << 8 | Integer.parseInt(ips[i]); - } - return ip2long; - - } - - public static long getIp2long2(String ip) { - ip = ip.trim(); - String[] ips = ip.split("\\."); - long ip1 = Integer.parseInt(ips[0]); - long ip2 = Integer.parseInt(ips[1]); - long ip3 = Integer.parseInt(ips[2]); - long ip4 = Integer.parseInt(ips[3]); - long ip2long = 1L * ip1 * 256 * 256 * 256 + ip2 * 256 * 256 + ip3 * 256 + ip4; - return ip2long; - - } + public final static String UNKNOWN = "unknown"; + + public static String getIpAddr(HttpServletRequest request) { + if (request == null) { + return UNKNOWN; + } + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.isEmpty() || UNKNOWN.equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.isEmpty() || UNKNOWN.equalsIgnoreCase(ip)) { + ip = request.getHeader("X-Forwarded-For"); + } + if (ip == null || ip.isEmpty() || UNKNOWN.equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.isEmpty() || UNKNOWN.equalsIgnoreCase(ip)) { + ip = request.getHeader("X-Real-IP"); + } + + if (ip == null || ip.isEmpty() || UNKNOWN.equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : EscapeUtil.clean(ip); + } + + public static boolean internalIp(String ip) { + byte[] addr = textToNumericFormatV4(ip); + return internalIp(addr) || "127.0.0.1".equals(ip); + } + + private static boolean internalIp(byte[] addr) { + if (StringUtils.isNull(addr) || addr.length < 2) { + return true; + } + final byte b0 = addr[0]; + final byte b1 = addr[1]; + // 10.x.x.x/8 + final byte SECTION_1 = 0x0A; + // 172.16.x.x/12 + final byte SECTION_2 = (byte) 0xAC; + final byte SECTION_3 = (byte) 0x10; + final byte SECTION_4 = (byte) 0x1F; + // 192.168.x.x/16 + final byte SECTION_5 = (byte) 0xC0; + final byte SECTION_6 = (byte) 0xA8; + switch (b0) { + case SECTION_1: + return true; + case SECTION_2: + if (b1 >= SECTION_3 && b1 <= SECTION_4) { + return true; + } + case SECTION_5: + switch (b1) { + case SECTION_6: + return true; + } + default: + return false; + } + } + + /** + * 将IPv4地址转换成字节 + * + * @param text IPv4地址 + * @return byte 字节 + */ + public static byte[] textToNumericFormatV4(String text) { + if (text.length() == 0) { + return null; + } + + byte[] bytes = new byte[4]; + String[] elements = text.split("\\.", -1); + try { + long l; + int i; + switch (elements.length) { + case 1: + l = Long.parseLong(elements[0]); + if ((l < 0L) || (l > 4294967295L)) { + return null; + } + bytes[0] = (byte) (int) (l >> 24 & 0xFF); + bytes[1] = (byte) (int) ((l & 0xFFFFFF) >> 16 & 0xFF); + bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF); + bytes[3] = (byte) (int) (l & 0xFF); + break; + case 2: + l = Integer.parseInt(elements[0]); + if ((l < 0L) || (l > 255L)) { + return null; + } + bytes[0] = (byte) (int) (l & 0xFF); + l = Integer.parseInt(elements[1]); + if ((l < 0L) || (l > 16777215L)) { + return null; + } + bytes[1] = (byte) (int) (l >> 16 & 0xFF); + bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF); + bytes[3] = (byte) (int) (l & 0xFF); + break; + case 3: + for (i = 0; i < 2; ++i) { + l = Integer.parseInt(elements[i]); + if ((l < 0L) || (l > 255L)) { + return null; + } + bytes[i] = (byte) (int) (l & 0xFF); + } + l = Integer.parseInt(elements[2]); + if ((l < 0L) || (l > 65535L)) { + return null; + } + bytes[2] = (byte) (int) (l >> 8 & 0xFF); + bytes[3] = (byte) (int) (l & 0xFF); + break; + case 4: + for (i = 0; i < 4; ++i) { + l = Integer.parseInt(elements[i]); + if ((l < 0L) || (l > 255L)) { + return null; + } + bytes[i] = (byte) (int) (l & 0xFF); + } + break; + default: + return null; + } + } catch (NumberFormatException e) { + return null; + } + return bytes; + } + + public static String getMacByIp(String ip) { + String macAddr = null; + try { + Process process = Runtime.getRuntime().exec("nbtstat -a " + ip); + BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); + Pattern pattern = Pattern.compile("([A-F0-9]{2}-){5}[A-F0-9]{2}"); + Matcher matcher; + for (String strLine = br.readLine(); strLine != null; strLine = br.readLine()) { + matcher = pattern.matcher(strLine); + if (matcher.find()) { + macAddr = matcher.group(); + break; + } + } + } catch (IOException e) { + e.printStackTrace(); + } + System.out.println(macAddr); + return macAddr; + } + + public static String getHostIp() { + try { + return InetAddress.getLocalHost().getHostAddress(); + } catch (UnknownHostException e) { + } + return "127.0.0.1"; + } + + public static String getHostName() { + try { + return InetAddress.getLocalHost().getHostName(); + } catch (UnknownHostException e) { + } + return "未知"; + } + + /* + * 验证IP是否属于某个IP段 + * + * ipSection IP段(以'-'分隔) ip 所验证的IP号码 + * + */ + + public static boolean ipExistsInRange(String ip, String ipStrat, String ipEnd) { + ip = ip.trim(); + String beginIP = ipStrat.trim(); + String endIP = ipEnd.trim(); + return getIp2long(beginIP) <= getIp2long(ip) && getIp2long(ip) <= getIp2long(endIP); + + } + + public static long getIp2long(String ip) { + ip = ip.trim(); + String[] ips = ip.split("\\."); + long ip2long = 0L; + for (int i = 0; i < 4; ++i) { + ip2long = ip2long << 8 | Integer.parseInt(ips[i]); + } + return ip2long; + + } + + public static long getIp2long2(String ip) { + ip = ip.trim(); + String[] ips = ip.split("\\."); + long ip1 = Integer.parseInt(ips[0]); + long ip2 = Integer.parseInt(ips[1]); + long ip3 = Integer.parseInt(ips[2]); + long ip4 = Integer.parseInt(ips[3]); + long ip2long = 1L * ip1 * 256 * 256 * 256 + ip2 * 256 * 256 + ip3 * 256 + ip4; + return ip2long; + + } } \ No newline at end of file