From 3c74b6ffe9e246c66d44f2c6be463a630328d30a Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 19 一月 2026 10:43:56 +0800
Subject: [PATCH] #
---
zy-acs-flow/public/login_bg.jpg | 0
zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/ConfigProperties.java | 63 ++++++
zy-acs-flow/src/App.jsx | 2
zy-acs-manager/src/main/java/com/zy/acs/manager/common/security/SecurityConfig.java | 2
zy-acs-common/src/main/java/com/zy/acs/common/enums/SystemModeType.java | 9
zy-acs-flow/src/i18n/zh.js | 19 +
zy-acs-manager/src/main/java/com/zy/acs/manager/common/domain/BusinessRes.java | 20 ++
zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/AuthController.java | 28 +-
zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/result/SystemInfoVo.java | 18 +
/dev/null | 0
zy-acs-flow/src/config/setting.js | 2
zy-acs-manager/src/main/java/com/zy/acs/manager/system/entity/Tenant.java | 18 -
zy-acs-manager/src/main/resources/application.yml | 3
zy-acs-flow/src/i18n/en.js | 19 +
zy-acs-flow/src/page/login/Login.jsx | 243 +++++++++++-------------
zy-acs-flow/public/login_bg.mp4 | 0
zy-acs-flow/src/page/login/index.jsx | 99 +++++++++
zy-acs-flow/src/map/MapPage.jsx | 7
zy-acs-flow/src/api/auth/index.js | 26 ++
19 files changed, 413 insertions(+), 165 deletions(-)
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/enums/SystemModeType.java b/zy-acs-common/src/main/java/com/zy/acs/common/enums/SystemModeType.java
new file mode 100644
index 0000000..9372472
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/enums/SystemModeType.java
@@ -0,0 +1,9 @@
+package com.zy.acs.common.enums;
+
+public enum SystemModeType {
+
+ ONLINE,
+ OFFLINE,
+ ;
+
+}
diff --git a/zy-acs-flow/public/login_bg2.jpg b/zy-acs-flow/public/login_bg.jpg
similarity index 100%
rename from zy-acs-flow/public/login_bg2.jpg
rename to zy-acs-flow/public/login_bg.jpg
Binary files differ
diff --git a/zy-acs-flow/public/login_bg1.mp4 b/zy-acs-flow/public/login_bg.mp4
similarity index 100%
rename from zy-acs-flow/public/login_bg1.mp4
rename to zy-acs-flow/public/login_bg.mp4
Binary files differ
diff --git a/zy-acs-flow/public/login_bg3.jpg b/zy-acs-flow/public/login_bg3.jpg
deleted file mode 100644
index 7a5e114..0000000
--- a/zy-acs-flow/public/login_bg3.jpg
+++ /dev/null
Binary files differ
diff --git a/zy-acs-flow/public/login_bg4.jpg b/zy-acs-flow/public/login_bg4.jpg
deleted file mode 100644
index 1671796..0000000
--- a/zy-acs-flow/public/login_bg4.jpg
+++ /dev/null
Binary files differ
diff --git a/zy-acs-flow/src/App.jsx b/zy-acs-flow/src/App.jsx
index 9b38f36..00924d9 100644
--- a/zy-acs-flow/src/App.jsx
+++ b/zy-acs-flow/src/App.jsx
@@ -16,7 +16,7 @@
import DataProvider from "./config/dataProvider";
import Dashboard from "./page/dashboard/Dashboard";
import Settings from "./page/settings/Settings";
-import Login from "./page/login/Login";
+import Login from "./page/login";
import * as Common from './utils/common'
import { themes } from './themes/themes';
import { SPA_NAME, SPA_VERSION, DEFAULT_THEME_NAME, DEFAULT_THEME_MODE, DATA_PROVIDER_SPRING } from "./config/setting";
diff --git a/zy-acs-flow/src/api/auth/index.js b/zy-acs-flow/src/api/auth/index.js
index 64f5767..8030bdf 100644
--- a/zy-acs-flow/src/api/auth/index.js
+++ b/zy-acs-flow/src/api/auth/index.js
@@ -1,5 +1,21 @@
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: _params });
+ if (res.data.code === 200) {
+ return res.data.data;
+ }
+ return Promise.reject(new Error(res.data.msg));
+}
+
export async function login(_params) {
const res = await request.post('/login', _params);
if (res.data.code === 200) {
@@ -8,10 +24,20 @@
return Promise.reject(new Error(res.data.msg));
}
+export async function register(_params) {
+ const res = await request.post('/register', _params);
+ return res.data;
+}
+
export async function menus(_params) {
return await request.get('/auth/menu', _params);
if (res.data.code === 200) {
return res.data.data;
}
return Promise.reject(new Error(res.data.msg));
+}
+
+export async function sendEmailCode(_params) {
+ const res = await request.get('/email/code', { params: _params });
+ return res.data;
}
\ No newline at end of file
diff --git a/zy-acs-flow/src/config/setting.js b/zy-acs-flow/src/config/setting.js
index a741148..0e4c2f6 100644
--- a/zy-acs-flow/src/config/setting.js
+++ b/zy-acs-flow/src/config/setting.js
@@ -37,6 +37,6 @@
export const EDIT_MODE = 'pessimistic'; // pessimistic | undoable
-export const LOGIN_BACKGROUND = 'image'; // image | media
+export const LOGIN_BACKGROUND = 'media'; // image | media
export const CUSTOM_PAGES_DATA_INTERVAL = 1000;
\ No newline at end of file
diff --git a/zy-acs-flow/src/i18n/en.js b/zy-acs-flow/src/i18n/en.js
index 3589f6a..0fae43f 100644
--- a/zy-acs-flow/src/i18n/en.js
+++ b/zy-acs-flow/src/i18n/en.js
@@ -599,6 +599,25 @@
}
},
page: {
+ login: {
+ title: 'Welcome to',
+ footer: '',
+ tenant: 'Company',
+ email: 'Email Address',
+ username: 'Username',
+ password: 'Password',
+ confirmPwd: 'Confirm Password',
+ code: 'Verification Code',
+ tab: {
+ login: 'SIGN IN',
+ register: 'SIGN UP',
+ },
+ button: {
+ login: 'SIGN IN',
+ register: 'SIGN UP',
+ code: 'Send Code',
+ },
+ },
code: {
dirRule: {
helper: 'Select one direction to disable; other directions remain available.',
diff --git a/zy-acs-flow/src/i18n/zh.js b/zy-acs-flow/src/i18n/zh.js
index ffe3417..9da98d5 100644
--- a/zy-acs-flow/src/i18n/zh.js
+++ b/zy-acs-flow/src/i18n/zh.js
@@ -599,6 +599,25 @@
}
},
page: {
+ login: {
+ title: '娆㈣繋浣跨敤',
+ footer: '',
+ tenant: '鍏徃',
+ email: '閭鍦板潃',
+ username: '鐧诲綍璐﹀彿',
+ password: '瀵嗙爜',
+ confirmPwd: '纭瀵嗙爜',
+ code: '楠岃瘉鐮�',
+ tab: {
+ login: '鐧诲綍',
+ register: '娉ㄥ唽',
+ },
+ button: {
+ login: '鐧诲綍',
+ register: '娉ㄥ唽',
+ code: '鑾峰彇楠岃瘉鐮�',
+ },
+ },
code: {
dirRule: {
helper: '閫夋嫨涓�涓柟鍚戠鐢紝鍏朵綑鏂瑰悜淇濇寔鍙敤',
diff --git a/zy-acs-flow/src/map/MapPage.jsx b/zy-acs-flow/src/map/MapPage.jsx
index de4e424..8b229e2 100644
--- a/zy-acs-flow/src/map/MapPage.jsx
+++ b/zy-acs-flow/src/map/MapPage.jsx
@@ -68,7 +68,9 @@
});
const handleResize = () => {
- if (!contentRef) { return; }
+ if (!contentRef.current || !player) {
+ return;
+ }
const width = contentRef.current.offsetWidth;
const height = contentRef.current.offsetHeight;
player.resize(width, height);
@@ -125,6 +127,9 @@
}, [sidebarOpen]);
useEffect(() => {
+ if (!player) {
+ return;
+ }
player.setTheme(themeMode);
Tool.setThemeMode(themeMode);
}, [themeMode])
diff --git a/zy-acs-flow/src/page/login/Login.jsx b/zy-acs-flow/src/page/login/Login.jsx
index 689d819..345f692 100644
--- a/zy-acs-flow/src/page/login/Login.jsx
+++ b/zy-acs-flow/src/page/login/Login.jsx
@@ -1,164 +1,143 @@
-import * as React from 'react';
-import { useState } from 'react';
+import React, { useState, useRef, useEffect, useMemo } from "react";
import { useLocation } from 'react-router-dom';
import {
- Avatar,
Box,
- Button,
- Card,
- CardActions,
CircularProgress,
+ Typography,
+ Button,
+ TextField,
+ Stack,
+ Autocomplete,
+ InputAdornment,
+ IconButton,
} from '@mui/material';
-import LockIcon from '@mui/icons-material/Lock';
import {
- Form,
- required,
- TextInput,
useTranslate,
useLogin,
useNotify,
} from 'react-admin';
-import { LOGIN_BACKGROUND } from '@/config/setting';
+import { useForm, Controller, useWatch, FormProvider, useFormContext } from "react-hook-form";
+import Visibility from '@mui/icons-material/Visibility';
+import VisibilityOff from '@mui/icons-material/VisibilityOff';
-const Login = () => {
- const [loading, setLoading] = useState(false);
+const Login = (props) => {
const translate = useTranslate();
-
const notify = useNotify();
const login = useLogin();
const location = useLocation();
- const handleSubmit = (auth) => {
+ const { control, handleSubmit, watch, setValue, getValues, setError, clearErrors } = useForm();
+
+ const [loading, setLoading] = useState(false);
+ const [showPassword, setShowPassword] = useState(false);
+
+ const username = watch('username');
+ const password = watch('password');
+
+ const onSubmit = (data) => {
setLoading(true);
- // js native confirm && root
login(
- auth,
+ data,
location.state ? (location.state).nextPathname : '/'
- ).catch((error) => {
+ ).catch((res) => {
setLoading(false);
- notify(
- typeof error === 'string'
- ? error
- : typeof error === 'undefined' || !error.message
- ? 'ra.auth.sign_in_error'
- : error.message,
- {
- type: 'error',
- messageArgs: {
- _:
- typeof error === 'string'
- ? error
- : error && error.message
- ? error.message
- : undefined,
- },
- }
- );
+ const { code, msg, data } = res;
+ if (code === 10003) {
+ setError('username', {
+ message: msg
+ })
+ } else if (code === 10004) {
+ setError('username', {
+ message: msg
+ })
+ } else if (code === 10001) {
+ setError('password', {
+ message: msg
+ })
+ } else {
+ notify(msg, { type: 'error', messageArgs: { _: msg } });
+ }
});
};
return (
- <Form onSubmit={handleSubmit} noValidate>
- {/* https://unsplash.com/ */}
+ <>
<Box
- sx={{
- display: 'flex',
- flexDirection: 'column',
- minHeight: '100vh',
- alignItems: 'center',
- justifyContent: 'flex-start',
- // justifyContent: 'center',
- background: `url(/login_bg2.jpg)`,
- backgroundRepeat: 'no-repeat',
- backgroundSize: 'cover',
- }}
+ p={2}
+ display="flex"
+ flexDirection='column'
+ component="form"
+ onSubmit={handleSubmit(onSubmit)}
+ noValidate
>
- <video
- autoPlay
- loop
- muted
- style={{
- position: 'fixed',
- top: 0,
- left: 0,
- width: '100%',
- height: '100%',
- // objectFit: 'cover',
- // objectFit: 'contain',
- objectFit: 'fill',
- // objectFit: 'scale-down',
- zIndex: 0,
- }}
- >
- {LOGIN_BACKGROUND === 'media' && (
- <source src="/login_bg1.mp4" type="video/mp4" />
- )}
- </video>
-
- <Card sx={{
- minWidth: 300,
- marginTop: '6em',
- zIndex: 1
- }}>
- <Box
- sx={{
- margin: '1em',
- display: 'flex',
- justifyContent: 'center',
- }}
- >
- <Avatar sx={{ bgcolor: 'secondary.main' }}>
- <LockIcon />
- </Avatar>
- </Box>
- <Box
- sx={{
- marginTop: '1em',
- display: 'flex',
- justifyContent: 'center',
- color: theme => theme.palette.grey[500],
- }}
- >
- Hint: root / 123456
- </Box>
- <Box sx={{ padding: '0 1em 1em 1em' }}>
- <Box sx={{ marginTop: '1em' }}>
- <TextInput
+ <Stack spacing={2}>
+ <Controller
+ name="username"
+ control={control}
+ defaultValue=""
+ rules={{ required: true }}
+ render={({ field, fieldState: { error } }) => (
+ <TextField
+ {...field}
+ label={translate("page.login.username")}
+ variant="standard"
+ disabled={loading}
autoFocus
- source="username"
- label={translate('ra.auth.username')}
- disabled={loading}
- validate={required()}
+ autoComplete="off"
+ error={!!error}
+ helperText={error?.message || ""}
/>
- </Box>
- <Box sx={{ marginTop: '1em' }}>
- <TextInput
- source="password"
- label={translate('ra.auth.password')}
- type="password"
+ )}
+ />
+
+ <Controller
+ name="password"
+ control={control}
+ defaultValue=""
+ rules={{ required: true }}
+ render={({ field, fieldState: { error } }) => (
+ <TextField
+ {...field}
+ label={translate("page.login.password")}
+ type={showPassword ? 'text' : 'password'}
+ variant="standard"
disabled={loading}
- validate={required()}
+ autoComplete="off"
+ error={!!error}
+ helperText={error?.message || ""}
+ InputProps={{
+ endAdornment: (
+ <InputAdornment position="end">
+ <IconButton
+ aria-label="toggle password visibility"
+ onClick={() => setShowPassword((show) => !show)}
+ onMouseDown={(event) => { event.preventDefault() }}
+ edge="end"
+ >
+ {showPassword ? <VisibilityOff /> : <Visibility />}
+ </IconButton>
+ </InputAdornment>
+ ),
+ }}
/>
- </Box>
- </Box>
- <CardActions sx={{ padding: '0 1em 1em 1em' }}>
- <Button
- variant="contained"
- type="submit"
- color="primary"
- disabled={loading}
- fullWidth
- >
- {loading && (
- <CircularProgress size={25} thickness={2} />
- )}
- {translate('ra.auth.sign_in')}
- </Button>
- </CardActions>
- </Card>
- </Box>
- </Form>
- );
-};
+ )}
+ />
+
+ <Box />
+
+ <Button
+ type="submit"
+ variant="contained"
+ disabled={loading || !username || !password}
+ >
+ {loading && <CircularProgress size={25} thickness={2} />}
+ {translate('page.login.button.login')}
+ </Button>
+
+ </Stack>
+ </Box >
+ </>
+ )
+}
export default Login;
diff --git a/zy-acs-flow/src/page/login/index.jsx b/zy-acs-flow/src/page/login/index.jsx
new file mode 100644
index 0000000..91ae0c9
--- /dev/null
+++ b/zy-acs-flow/src/page/login/index.jsx
@@ -0,0 +1,99 @@
+import React, { useState, useRef, useEffect, useMemo } from "react";
+import {
+ Box,
+ AppBar,
+ Card,
+ Toolbar,
+ CircularProgress,
+ Typography,
+ Tabs,
+ Tab,
+ useTheme,
+ useMediaQuery,
+ Button,
+} from '@mui/material';
+import {
+ useTranslate,
+ useLogin,
+ useNotify,
+} from 'react-admin';
+import { LOGIN_BACKGROUND, DEFAULT_THEME_MODE } from '@/config/setting';
+import Login from "./Login";
+
+const Index = () => {
+ const translate = useTranslate();
+ const theme = useTheme();
+ const isSmallScreen = useMediaQuery(theme.breakpoints.down('md'));
+
+ const [tab, setTab] = useState(0)
+
+ const formPosition = isSmallScreen ? 'middle' : 'right'
+
+
+ return (
+ <Box
+ sx={{
+ display: 'flex',
+ flexDirection: 'column',
+ minHeight: '100vh',
+ alignItems: formPosition === 'middle' ? 'center' : 'flex-end',
+ paddingRight: formPosition === 'middle' ? 0 : '6em',
+ justifyContent: formPosition === 'middle' ? 'flex-start' : 'center',
+ background: `url(/login_bg.jpg)`, // https://unsplash.com/
+ backgroundRepeat: 'no-repeat',
+ backgroundSize: 'cover',
+ }}
+ >
+ <video
+ autoPlay
+ loop
+ muted
+ style={{
+ position: 'fixed',
+ top: 0,
+ left: 0,
+ width: '100%',
+ height: '100%',
+ // objectFit: 'cover',
+ // objectFit: 'contain',
+ objectFit: 'fill',
+ // objectFit: 'scale-down',
+ zIndex: 0,
+ }}
+ >
+ {LOGIN_BACKGROUND === 'media' && (
+ <source src="/login_bg.mp4" type="video/mp4" />
+ )}
+ </video>
+
+ <Card sx={{
+ width: 400,
+ marginTop: formPosition === 'middle' ? '6em' : 0,
+ zIndex: 1,
+ bgcolor: DEFAULT_THEME_MODE === 'light' ? '#fff' : '#121212',
+ border: 'inherit'
+ }}>
+ <div>
+ <AppBar position="static" sx={{
+ backgroundColor: '#3D4BA7',
+ border: 'inherit',
+ }}>
+ <Toolbar sx={{
+ display: 'flex',
+ justifyContent: 'space-between'
+ }}>
+ <Typography variant="h6" color="inherit">{translate("page.login.title")} {"RMS"}</Typography>
+ </Toolbar>
+ </AppBar>
+ </div>
+
+ <Login />
+ <Box mb={1} sx={{ textAlign: 'center' }}>
+ <Typography variant="caption" align="center">{translate("page.login.footer")}</Typography>
+ </Box>
+ </Card>
+ </Box >
+ );
+};
+
+export default Index;
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/ConfigProperties.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/ConfigProperties.java
index c97f6b3..f75739a 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/ConfigProperties.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/ConfigProperties.java
@@ -1,8 +1,13 @@
package com.zy.acs.manager.common.config;
+import com.zy.acs.common.enums.SystemModeType;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
/**
* 绯荤粺閰嶇疆灞炴��
@@ -30,4 +35,62 @@
*/
private String tokenKey;
+ /**
+ * 绯荤粺鍚嶇О
+ */
+ private String systemName;
+
+ /**
+ * 绯荤粺鐗堟湰
+ */
+ private String systemVersion;
+
+ /**
+ * 绯荤粺妯″紡锛� ONLINE / OFFLINE )
+ */
+ private String systemMode;
+
+ /**
+ * 瓒呯骇绠$悊鍛�
+ */
+ private String superUsername;
+
+ /**
+ * 楠岃瘉鐮侀暱搴�
+ */
+ private Integer codeLength = 4;
+
+ /**
+ * 楠岃瘉鐮佹湁鏁堟湡 锛� 绉� 锛�
+ */
+ private Integer codeTime = 300;
+
+ /**
+ * 瓒呯骇楠岃瘉鐮�
+ */
+ private String securityCode;
+
+ /**
+ * 鏂囦欢淇濆瓨璺緞
+ */
+ private String fileSavePath;
+
+ /**
+ * 鏂囦欢鏈嶅姟鍣╱rl鍓嶇紑
+ */
+ private String fileDomainPrefix;
+
+ /**
+ * 鍥剧墖鏈�澶т綋绉�
+ */
+ private Integer imageMaxSize;
+
+ public List<String> getSuperUserList() {
+ return Arrays.stream(superUsername.split(",")).collect(Collectors.toList());
+ }
+
+ public SystemModeType getSystemMode() {
+ return SystemModeType.valueOf(systemMode);
+ }
+
}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/domain/BusinessRes.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/domain/BusinessRes.java
new file mode 100644
index 0000000..a2ee420
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/domain/BusinessRes.java
@@ -0,0 +1,20 @@
+package com.zy.acs.manager.common.domain;
+
+
+import com.zy.acs.framework.common.BaseRes;
+
+public class BusinessRes implements BaseRes {
+
+ public final static String INVALID_PASSWORD = "10001 - The current password was incorrect";
+
+ public final static String USERNAME_EXIST = "10002 - Username already exist";
+
+ public final static String USERNAME_NOT_EXIST = "10003 - Username doesn't exist";
+
+ public final static String USERNAME_FROZEN = "10004 - Account frozen";
+
+ public final static String INVALID_EMAIL = "10005 - Invalid email address";
+
+ public final static String EMAIL_EXIT = "10006 - Email address already exist";
+
+}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/security/SecurityConfig.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/security/SecurityConfig.java
index 3f5a9d6..e7fd667 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/security/SecurityConfig.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/security/SecurityConfig.java
@@ -34,6 +34,8 @@
public class SecurityConfig extends WebSecurityConfigurerAdapter {
public static final String[] FILTER_PATH = new String[]{
+ "/api/system/info",
+ "/api/tenant/list",
"/api/open/**",
"/demo/**",
"/test/**",
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/AuthController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/AuthController.java
index 6f2ce54..6b79bab 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/AuthController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/AuthController.java
@@ -5,12 +5,15 @@
import com.zy.acs.framework.common.R;
import com.zy.acs.manager.common.annotation.OperationLog;
import com.zy.acs.manager.common.config.ConfigProperties;
+import com.zy.acs.manager.common.domain.BusinessRes;
import com.zy.acs.manager.common.security.JwtSubject;
import com.zy.acs.manager.common.utils.JwtUtil;
+import com.zy.acs.manager.manager.enums.StatusType;
import com.zy.acs.manager.system.controller.param.LoginParam;
import com.zy.acs.manager.system.controller.param.UpdatePasswordParam;
import com.zy.acs.manager.system.controller.result.LoginResult;
import com.zy.acs.manager.system.controller.result.MenuVo;
+import com.zy.acs.manager.system.controller.result.SystemInfoVo;
import com.zy.acs.manager.system.entity.Menu;
import com.zy.acs.manager.system.entity.User;
import com.zy.acs.manager.system.entity.UserLogin;
@@ -53,18 +56,18 @@
Long tenantId = param.getTenantId();
User user = userService.getByUsername(username, tenantId);
if (user == null) {
- return R.error("Username Does Not Exist");
+ return R.parse(BusinessRes.USERNAME_NOT_EXIST);
}
- if (!user.getStatus().equals(1)) {
- return R.error("Account Frozen");
+ if (!user.getStatus().equals(StatusType.ENABLE.val)) {
+ return R.parse(BusinessRes.USERNAME_FROZEN);
}
if (!userService.comparePassword(user.getPassword(), param.getPassword())) {
- return R.error("Wrong Password");
+ return R.parse(BusinessRes.INVALID_PASSWORD);
}
String accessToken = JwtUtil.buildToken(new JwtSubject(username, user.getTenantId()),
configProperties.getTokenExpireTime(), configProperties.getTokenKey());
userLoginService.saveAsync(user.getId(), accessToken, UserLogin.TYPE_LOGIN, tenantId, null, request);
- return R.ok("Login Success").add(new LoginResult(accessToken, user));
+ return R.ok("Sign In Success").add(new LoginResult(accessToken, user));
}
@GetMapping("/auth/user")
@@ -78,13 +81,6 @@
// return R.ok().add(Utils.toTreeData(menus, 0L, Menu::getParentId, Menu::getId, Menu::setChildren));
List<MenuVo> voList = menus.stream().map(this::convertToVo).collect(Collectors.toList());
return R.ok().add(Utils.toTreeData(voList, 0L, MenuVo::getParentId, MenuVo::getId, MenuVo::setChildren));
- }
-
-
-
- @GetMapping("/auth/tenant")
- public R authHost() {
- return R.ok().add(tenantService.list());
}
@PreAuthorize("hasAuthority('sys:auth:user')")
@@ -127,6 +123,14 @@
return R.error("Update Fail");
}
+ @GetMapping("/system/info")
+ public R systemInfo() {
+ SystemInfoVo infoVo = new SystemInfoVo();
+ infoVo.setName(configProperties.getSystemName());
+ infoVo.setVersion(configProperties.getSystemVersion());
+ infoVo.setMode(configProperties.getSystemMode().toString());
+ return R.ok(infoVo);
+ }
// ----------------------------------------------------
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/result/SystemInfoVo.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/result/SystemInfoVo.java
new file mode 100644
index 0000000..5bfd492
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/result/SystemInfoVo.java
@@ -0,0 +1,18 @@
+package com.zy.acs.manager.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/zy-acs-manager/src/main/java/com/zy/acs/manager/system/entity/Tenant.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/entity/Tenant.java
index 62a526c..ab836e0 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/entity/Tenant.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/entity/Tenant.java
@@ -4,12 +4,10 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.zy.acs.framework.common.Cools;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
-import java.text.SimpleDateFormat;
import java.util.Date;
@Data
@@ -72,22 +70,6 @@
default:
return null;
}
- }
-
-
-
- public String getCreateTime$(){
- if (Cools.isEmpty(this.createTime)){
- return "";
- }
- return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
- }
-
- public String getUpdateTime$(){
- if (Cools.isEmpty(this.updateTime)){
- return "";
- }
- return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
}
}
diff --git a/zy-acs-manager/src/main/resources/application.yml b/zy-acs-manager/src/main/resources/application.yml
index 99a4643..2af0b1c 100644
--- a/zy-acs-manager/src/main/resources/application.yml
+++ b/zy-acs-manager/src/main/resources/application.yml
@@ -83,6 +83,9 @@
path: stock/out/rcs-manager/logs
config:
+ system-name: @pom.artifactId@
+ system-version: @pom.version@
+ system-mode: ONLINE
open-office-home: C
swagger-base-package: com.zy.acs
swagger-title: ACS API鏂囨。
--
Gitblit v1.9.1