From 8a2b58138c9f8fafe68e9f5bef0a80348595000a Mon Sep 17 00:00:00 2001 From: vincentlu <t1341870251@gmail.com> Date: 星期三, 12 二月 2025 13:48:24 +0800 Subject: [PATCH] # --- rsf-admin/src/api/auth/index.js | 8 ++++ rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java | 18 +++++++++ rsf-admin/src/page/login/index.jsx | 10 +++- rsf-server/src/main/java/com/vincent/rsf/server/system/controller/result/SystemInfoVo.java | 18 +++++++++ rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java | 1 rsf-admin/src/page/login/Register.jsx | 2 rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java | 17 ++++++++ rsf-server/src/main/resources/application.yml | 4 + rsf-admin/src/page/login/Login.jsx | 2 rsf-common/src/main/java/com/vincent/rsf/common/enums/SystemModeType.java | 2 rsf-admin/src/App.jsx | 7 +++ 11 files changed, 81 insertions(+), 8 deletions(-) diff --git a/rsf-admin/src/App.jsx b/rsf-admin/src/App.jsx index f3be5e5..f5034a8 100644 --- a/rsf-admin/src/App.jsx +++ b/rsf-admin/src/App.jsx @@ -21,6 +21,7 @@ import { themes } from './themes/themes'; import { SPA_NAME, SPA_VERSION, DEFAULT_THEME_NAME, DEFAULT_THEME_MODE, DATA_PROVIDER_SPRING } from "./config/setting"; import ResourceContent from "./page/ResourceContent"; +import { getSystemInfo } from '@/api/auth'; const i18nProvider = polyglotI18nProvider( locale => { @@ -50,6 +51,12 @@ const lightTheme = themes.find(theme => theme.name === themeName)?.light; const darkTheme = themes.find(theme => theme.name === themeName)?.dark; + useEffect(() => { + getSystemInfo().then(data => { + localStorage.setItem("system", JSON.stringify(data)); + }) + }, []); + return ( <> <Admin diff --git a/rsf-admin/src/api/auth/index.js b/rsf-admin/src/api/auth/index.js index 3c164da..6cd4d6f 100644 --- a/rsf-admin/src/api/auth/index.js +++ b/rsf-admin/src/api/auth/index.js @@ -1,5 +1,13 @@ import request from '../../utils/request'; +export async function getSystemInfo() { + const res = await request.get('/system/info'); + if (res.data.code === 200) { + return res.data.data; + } + return Promise.reject(new Error(res.data.msg)); +} + export async function tenants(_params) { const res = await request.get('/tenant/list', _params); if (res.data.code === 200) { diff --git a/rsf-admin/src/page/login/Login.jsx b/rsf-admin/src/page/login/Login.jsx index 0eedaad..b70c721 100644 --- a/rsf-admin/src/page/login/Login.jsx +++ b/rsf-admin/src/page/login/Login.jsx @@ -26,7 +26,7 @@ const notify = useNotify(); const login = useLogin(); const location = useLocation(); - const { tenantList } = props; + const { systemInfo, tenantList } = props; const { control, handleSubmit, watch, setValue, getValues } = useForm(); diff --git a/rsf-admin/src/page/login/Register.jsx b/rsf-admin/src/page/login/Register.jsx index e803ec5..3e19a4f 100644 --- a/rsf-admin/src/page/login/Register.jsx +++ b/rsf-admin/src/page/login/Register.jsx @@ -26,7 +26,7 @@ const notify = useNotify(); const login = useLogin(); const location = useLocation(); - const { tab, tenantList } = props; + const { systemInfo, tenantList } = props; const { control, watch, handleSubmit, setValue } = useForm(); diff --git a/rsf-admin/src/page/login/index.jsx b/rsf-admin/src/page/login/index.jsx index d491959..5fab118 100644 --- a/rsf-admin/src/page/login/index.jsx +++ b/rsf-admin/src/page/login/index.jsx @@ -17,7 +17,7 @@ useNotify, } from 'react-admin'; import { LOGIN_BACKGROUND } from '@/config/setting'; -import { tenants } from '@/api/auth'; +import { getSystemInfo, tenants } from '@/api/auth'; import Login from "./Login"; import Register from "./Register"; @@ -27,11 +27,15 @@ const isSmallScreen = useMediaQuery(theme.breakpoints.down('md')); const [tab, setTab] = useState(0) + const [systemInfo, setSystemInfo] = useState({}); const [tenantList, setTenantList] = useState([]); const formPosition = isSmallScreen ? 'middle' : 'right' useEffect(() => { + getSystemInfo().then(data => { + setSystemInfo(data); + }) tenants().then(data => { setTenantList(data); }) @@ -100,8 +104,8 @@ <Tab label={translate('page.login.tab.register')} sx={{ fontSize: '.8em' }} /> </Tabs> - {tab === 0 && <Login tenantList={tenantList} />} - {tab === 1 && <Register tenantList={tenantList} />} + {tab === 0 && <Login systemInfo={systemInfo} tenantList={tenantList} />} + {tab === 1 && <Register systemInfo={systemInfo} tenantList={tenantList} />} <Box mb={1} sx={{ textAlign: 'center' }}> <Typography variant="caption" align="center">{translate("page.login.footer")}</Typography> diff --git a/rsf-common/src/main/java/com/vincent/rsf/common/enums/SystemModeType.java b/rsf-common/src/main/java/com/vincent/rsf/common/enums/SystemModeType.java index dba4463..e010fc3 100644 --- a/rsf-common/src/main/java/com/vincent/rsf/common/enums/SystemModeType.java +++ b/rsf-common/src/main/java/com/vincent/rsf/common/enums/SystemModeType.java @@ -1,6 +1,6 @@ package com.vincent.rsf.common.enums; -public enum SystemMode { +public enum SystemModeType { ONLINE, OFFLINE, diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java index 69f05b4..4a2d3fc 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java @@ -1,5 +1,6 @@ package com.vincent.rsf.server.common.config; +import com.vincent.rsf.common.enums.SystemModeType; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; @@ -35,9 +36,19 @@ private String tokenKey; /** + * 绯荤粺鍚嶇О + */ + private String systemName; + + /** + * 绯荤粺鐗堟湰 + */ + private String systemVersion; + + /** * 绯荤粺妯″紡锛� ONLINE / OFFLINE ) */ - private String mode; + private String systemMode; /** * 瓒呯骇绠$悊鍛� @@ -48,4 +59,8 @@ return Arrays.stream(superUsername.split(",")).collect(Collectors.toList()); } + public SystemModeType getSystemMode() { + return SystemModeType.valueOf(systemMode); + } + } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java index bc22f98..f1e3471 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java @@ -36,6 +36,7 @@ public static final String[] FILTER_PATH = new String[]{ "/demo/**", "/test/**", + "/system/info", "/tenant/list", "/login", "/druid/**", diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java index 9c9f64c..01afd24 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java @@ -1,16 +1,19 @@ package com.vincent.rsf.server.system.controller; +import com.vincent.rsf.common.enums.SystemModeType; import com.vincent.rsf.common.utils.Utils; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.server.common.annotation.OperationLog; import com.vincent.rsf.server.common.config.ConfigProperties; import com.vincent.rsf.server.common.security.JwtSubject; +import com.vincent.rsf.server.common.service.EmailService; import com.vincent.rsf.server.common.utils.JwtUtil; import com.vincent.rsf.server.system.controller.param.LoginParam; import com.vincent.rsf.server.system.controller.param.UpdatePasswordParam; import com.vincent.rsf.server.system.controller.result.LoginResult; import com.vincent.rsf.server.system.controller.result.MenuVo; +import com.vincent.rsf.server.system.controller.result.SystemInfoVo; import com.vincent.rsf.server.system.entity.Menu; import com.vincent.rsf.server.system.entity.Tenant; import com.vincent.rsf.server.system.entity.User; @@ -20,6 +23,7 @@ import com.vincent.rsf.server.system.service.TenantService; import com.vincent.rsf.server.system.service.UserLoginService; import com.vincent.rsf.server.system.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -48,10 +52,14 @@ private RoleMenuService roleMenuService; @Resource private TenantService tenantService; + @Autowired + private EmailService emailService; @PostMapping("/login") public R login(@RequestBody LoginParam param, HttpServletRequest request) { // System.out.println(userService.encodePassword("123456")); +// emailService.sendVerificationEmail("t1341870251@gmail.com", "123456"); + String username = param.getUsername(); Long tenantId = param.getTenantId(); User user = userService.getByUsername(username, tenantId); @@ -71,6 +79,16 @@ return R.ok("Sign In Success").add(new LoginResult(accessToken, user, tenant.getName())); } + @GetMapping("/system/info") + public R systemInfo() { + SystemModeType systemMode = configProperties.getSystemMode(); + SystemInfoVo infoVo = new SystemInfoVo(); + infoVo.setName(configProperties.getSystemName()); + infoVo.setVersion(configProperties.getSystemVersion()); + infoVo.setMode(systemMode.toString()); + return R.ok(infoVo); + } + @GetMapping("/tenant/list") public R tenantList() { return R.ok().add(tenantService.list()); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/result/SystemInfoVo.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/result/SystemInfoVo.java new file mode 100644 index 0000000..7643ee8 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/result/SystemInfoVo.java @@ -0,0 +1,18 @@ +package com.vincent.rsf.server.system.controller.result; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SystemInfoVo { + + private String name; + + private String version; + + private String mode; + +} diff --git a/rsf-server/src/main/resources/application.yml b/rsf-server/src/main/resources/application.yml index 1c5c099..7008f3e 100644 --- a/rsf-server/src/main/resources/application.yml +++ b/rsf-server/src/main/resources/application.yml @@ -28,6 +28,8 @@ path: logs/@pom.artifactId@ config: + system-name: @pom.artifactId@ + system-version: @pom.version@ + system-mode: OFFLINE token-key: KUHSMcYQ4lePt3r6bckz0P13cBJyoonYqInThvQlUnbsFCIcCcZZAbWZ6UNFztYNYPhGdy6eyb8WdIz8FU2Cz396TyTJk3NI2rtXMHBOehRb4WWJ4MdYVVg2oWPyqRQ2 - mode: OFFLINE super-username: root \ No newline at end of file -- Gitblit v1.9.1