diff --git a/chat2db-client/src/components/ConnectionEdit/index.tsx b/chat2db-client/src/components/ConnectionEdit/index.tsx index 230b16fe..7af68e3d 100644 --- a/chat2db-client/src/components/ConnectionEdit/index.tsx +++ b/chat2db-client/src/components/ConnectionEdit/index.tsx @@ -53,7 +53,7 @@ export default forwardRef(function CreateConnection(props: IProps, ref: Forwarde backfillDataLoading: false, sshTestLoading: false }); - const [envList, setEnvList] = useState<{value:string,label:string}[]>([]); + const [envList, setEnvList] = useState<{ value: string, label: string }[]>([]); useEffect(() => { @@ -200,7 +200,7 @@ export default forwardRef(function CreateConnection(props: IProps, ref: Forwarde p.id = backfillData.id; } - if (type === submitType.SAVE || type === submitType.UPDATE) { + if ((type === submitType.SAVE || type === submitType.UPDATE) && submit) { submit?.(p); return } diff --git a/chat2db-client/src/components/Iconfont/index.less b/chat2db-client/src/components/Iconfont/index.less index 425e4832..cf735828 100644 --- a/chat2db-client/src/components/Iconfont/index.less +++ b/chat2db-client/src/components/Iconfont/index.less @@ -1,7 +1,9 @@ @font-face { - font-family: 'iconfont'; /* Project id 3633546 */ - src: url('../../assets/font/iconfont.woff2') format('woff2'), url('../../assets/font/iconfont.woff') format('woff'), - url('../../assets/font/iconfont.ttf') format('truetype'); + font-family: 'iconfont'; + /* Project id 3633546 */ + src: url('//at.alicdn.com/t/c/font_3633546_73vqnzklicw.woff2?t=1693730048111') format('woff2'), + url('//at.alicdn.com/t/c/font_3633546_73vqnzklicw.woff?t=1693730048111') format('woff'), + url('//at.alicdn.com/t/c/font_3633546_73vqnzklicw.ttf?t=1693730048111') format('truetype'); } .iconfont { @@ -12,4 +14,4 @@ -webkit-font-smoothing: antialiased; -webkit-text-stroke-width: 0.2px; -moz-osx-font-smoothing: grayscale; -} +} \ No newline at end of file diff --git a/chat2db-client/src/components/Iconfont/index.tsx b/chat2db-client/src/components/Iconfont/index.tsx index d33e2e78..8b9a1a66 100644 --- a/chat2db-client/src/components/Iconfont/index.tsx +++ b/chat2db-client/src/components/Iconfont/index.tsx @@ -8,10 +8,11 @@ if (__ENV__ === 'local') { let container = ` /* 在线链接服务仅供平台体验和调试使用,平台不承诺服务的稳定性,企业客户需下载字体包自行发布使用并做好备份。 */ @font-face { - font-family: 'iconfont'; /* Project id 3633546 */ - src: url('//at.alicdn.com/t/c/font_3633546_3p2ezsbklq9.woff2?t=1692415581018') format('woff2'), - url('//at.alicdn.com/t/c/font_3633546_3p2ezsbklq9.woff?t=1692415581018') format('woff'), - url('//at.alicdn.com/t/c/font_3633546_3p2ezsbklq9.ttf?t=1692415581018') format('truetype'); + font-family: 'iconfont'; + /* Project id 3633546 */ + src: url('//at.alicdn.com/t/c/font_3633546_73vqnzklicw.woff2?t=1693730048111') format('woff2'), + url('//at.alicdn.com/t/c/font_3633546_73vqnzklicw.woff?t=1693730048111') format('woff'), + url('//at.alicdn.com/t/c/font_3633546_73vqnzklicw.ttf?t=1693730048111') format('truetype'); } `; let style = document.createElement('style'); diff --git a/chat2db-client/src/i18n/en-us/common.ts b/chat2db-client/src/i18n/en-us/common.ts index fd947679..a9cca9f0 100644 --- a/chat2db-client/src/i18n/en-us/common.ts +++ b/chat2db-client/src/i18n/en-us/common.ts @@ -79,5 +79,7 @@ export default { 'common.tips.delete.confirm': 'Are you sure to delete it?', 'common.tips.updateSuccess': 'Update Successfully', 'common.tips.createSuccess': 'Create Successfully', - 'common.text.action': 'Action' + 'common.text.action': 'Action', + 'common.button.add': 'Add', + }; diff --git a/chat2db-client/src/i18n/en-us/index.ts b/chat2db-client/src/i18n/en-us/index.ts index deacf628..964e0571 100644 --- a/chat2db-client/src/i18n/en-us/index.ts +++ b/chat2db-client/src/i18n/en-us/index.ts @@ -6,6 +6,7 @@ import workspace from './workspace'; import dashboard from './dashboard'; import chat from './chat'; import team from './team' +import login from './login'; export default { lang: 'en', @@ -16,5 +17,6 @@ export default { ...menu, ...dashboard, ...chat, - ...team + ...team, + ...login }; diff --git a/chat2db-client/src/i18n/en-us/login.ts b/chat2db-client/src/i18n/en-us/login.ts new file mode 100644 index 00000000..e455739f --- /dev/null +++ b/chat2db-client/src/i18n/en-us/login.ts @@ -0,0 +1,12 @@ +export default { + 'login.text.logout': 'Logout', + 'login.text.welcome': 'Welcome to Chat2DB', + 'login.text.tips': 'The Chat2DB account is only for team collaboration management.', + 'login.text.tips.title': 'Why need login?', + 'login.text.setting': 'Setting', + 'login.form.user': 'UserName', + 'login.form.user.placeholder': 'Please enter your username', + 'login.form.password': 'Password', + 'login.form.password.placeholder': 'Please enter your password', + 'login.button.login': 'Login', +}; diff --git a/chat2db-client/src/i18n/en-us/team.ts b/chat2db-client/src/i18n/en-us/team.ts index d0e7906d..af0a6ca1 100644 --- a/chat2db-client/src/i18n/en-us/team.ts +++ b/chat2db-client/src/i18n/en-us/team.ts @@ -2,22 +2,35 @@ export default { 'team.tab.datasource': 'DataSource Management', 'team.tab.user': 'User Management', 'team.tab.team': 'Team Management', - 'team.datasource.alias': 'DataSource Name', - 'team.datasource.url': 'DataSource URL', - 'team.user.userName': 'UserName', - 'team.user.nickName': 'NickName', - 'team.user.status': 'Status', + + 'team.action.rightManagement': 'Right Management', 'team.action.editDatasource': 'Edit DataSource', 'team.action.addDatasource': 'Add DataSource', + 'team.action.addDatasource.placeholder': 'Search DataSource', 'team.action.addUser': 'Add User', + 'team.action.addUser.placeholder': 'Search User', 'team.action.editTeam': 'Edit Team', 'team.action.addTeam': 'Add Team', + 'team.action.addTeam.placeholder': 'Search Team', 'team.action.affiliation.user': 'Affiliation User', 'team.action.affiliation.team': 'Affiliation Team', 'team.action.affiliation.datasource': 'Affiliation DataSource', + 'team.action.addUserAndTeam': 'Add User/Team', + 'team.action.addUserAndTeam.placeholder': 'Search User/Team', 'team.input.search.placeholder': 'Please enter keywords to search', + 'team.datasource.rightManagement': 'Right Management', + 'team.datasource.alias': 'DataSource Name', + 'team.datasource.url': 'DataSource URL', + 'team.datasource.code': 'Code', + 'team.datasource.name': 'Name', + 'team.datasource.status': 'Status', + + 'team.user.name': 'User', + 'team.user.userName': 'UserName', + 'team.user.nickName': 'NickName', + 'team.user.status': 'Status', 'team.user.addForm.userName': 'UserName', 'team.user.addForm.nickName': 'NickName', 'team.user.addForm.email': 'Email', @@ -30,10 +43,13 @@ export default { 'team.user.addForm.status.invalid': 'Invalid', + 'team.team.name': 'Team', 'team.team.addForm.code': 'Team Code', 'team.team.addForm.name': 'Team Name', 'team.team.addForm.status': 'Status', 'team.team.addForm.status.valid': 'Valid', 'team.team.addForm.status.invalid': 'Invalid', 'team.team.addForm.description': 'Description', + + } \ No newline at end of file diff --git a/chat2db-client/src/i18n/zh-cn/common.ts b/chat2db-client/src/i18n/zh-cn/common.ts index 4b1956b2..427dafad 100644 --- a/chat2db-client/src/i18n/zh-cn/common.ts +++ b/chat2db-client/src/i18n/zh-cn/common.ts @@ -77,5 +77,7 @@ export default { 'common.tips.delete.confirm': '确认要删除吗?', 'common.tips.updateSuccess': '更新成功', 'common.tips.createSuccess': '创建成功', - 'common.text.action': '操作' + 'common.text.action': '操作', + 'common.button.add': '添加', + }; diff --git a/chat2db-client/src/i18n/zh-cn/index.ts b/chat2db-client/src/i18n/zh-cn/index.ts index 4f46261f..f9e6e22c 100644 --- a/chat2db-client/src/i18n/zh-cn/index.ts +++ b/chat2db-client/src/i18n/zh-cn/index.ts @@ -7,6 +7,7 @@ import workspace from './workspace'; import dashboard from './dashboard'; import chat from './chat'; import team from './team' +import login from './login'; export default { lang: LangType.ZH_CN, @@ -18,5 +19,6 @@ export default { ...connection, ...dashboard, ...chat, - ...team + ...team, + ...login }; diff --git a/chat2db-client/src/i18n/zh-cn/login.ts b/chat2db-client/src/i18n/zh-cn/login.ts new file mode 100644 index 00000000..9ea27fe1 --- /dev/null +++ b/chat2db-client/src/i18n/zh-cn/login.ts @@ -0,0 +1,12 @@ +export default { + 'login.text.logout': '退出登录', + 'login.text.welcome': '欢迎使用 Chat2DB', + 'login.text.tips': 'Chat2DB 账号仅用于团队协作管理', + 'login.text.tips.title': '为什么需要登录?', + 'login.text.setting': '设 置', + 'login.form.user': '用户名', + 'login.form.user.placeholder': '请输入用户名', + 'login.form.password': '密码', + 'login.form.password.placeholder': '请输入密码', + 'login.button.login': '登 录', +}; diff --git a/chat2db-client/src/i18n/zh-cn/team.ts b/chat2db-client/src/i18n/zh-cn/team.ts index e15f1b41..62e423bf 100644 --- a/chat2db-client/src/i18n/zh-cn/team.ts +++ b/chat2db-client/src/i18n/zh-cn/team.ts @@ -1,39 +1,52 @@ export default { - 'team.tab.datasource': '链接管理', - 'team.tab.user': '用户管理', - 'team.tab.team': '团队管理', - 'team.datasource.alias': '链接名称', - 'team.datasource.url': '链接地址', - 'team.user.userName': '用户名', - 'team.user.nickName': '昵称', - 'team.user.status': '状态', - 'team.action.rightManagement': '权限管理', - 'team.action.editDatasource': '编辑链接', - 'team.action.addDatasource': '添加链接', - 'team.action.editUser': '编辑用户', - 'team.action.addUser': '添加用户', - 'team.action.editTeam': '编辑团队', - 'team.action.addTeam': '添加团队', - 'team.action.affiliation.user': '包含用户', - 'team.action.affiliation.team': '所属团队', - 'team.action.affiliation.datasource': '归属链接', - 'team.input.search.placeholder': '输入关键字进行搜索', + 'team.tab.datasource': '链接管理', + 'team.tab.user': '用户管理', + 'team.tab.team': '团队管理', - 'team.user.addForm.userName': '用户名', - 'team.user.addForm.nickName': '昵称', - 'team.user.addForm.email': '邮箱', - 'team.user.addForm.password': '密码', - 'team.user.addForm.roleCode': '角色', - 'team.user.addForm.roleCode.admin': '管理员', - 'team.user.addForm.roleCode.user': '用户', - 'team.user.addForm.status': '状态', - 'team.user.addForm.status.valid': '有效', - 'team.user.addForm.status.invalid': '无效', + 'team.action.rightManagement': '权限管理', + 'team.action.editDatasource': '编辑链接', + 'team.action.addDatasource': '添加链接', + 'team.action.addDatasource.placeholder': '搜索链接', + 'team.action.editUser': '编辑用户', + 'team.action.addUser': '添加用户', + 'team.action.addUser.placeholder': '搜索用户', + 'team.action.editTeam': '编辑团队', + 'team.action.addTeam': '添加团队', + 'team.action.addTeam.placeholder': '搜索团队', + 'team.action.affiliation.user': '包含用户', + 'team.action.affiliation.team': '所属团队', + 'team.action.affiliation.datasource': '归属链接', + 'team.action.addUserAndTeam': '添加用户/团队', + 'team.action.addUserAndTeam.placeholder': '搜索人员/团队', + 'team.input.search.placeholder': '输入关键字进行搜索', - 'team.team.addForm.code': '团队编码', - 'team.team.addForm.name': '团队名', - 'team.team.addForm.status': '状态', - 'team.team.addForm.status.valid': '有效', - 'team.team.addForm.status.invalid': '无效', - 'team.team.addForm.description': '描述', -} \ No newline at end of file + 'team.datasource.rightManagement': '权限管理', + 'team.datasource.alias': '链接名称', + 'team.datasource.url': '链接地址', + 'team.datasource.code': '编码', + 'team.datasource.name': '名称', + 'team.datasource.status': '状态', + + 'team.user.name': '用户', + 'team.user.userName': '用户名', + 'team.user.nickName': '昵称', + 'team.user.status': '状态', + 'team.user.addForm.userName': '用户名', + 'team.user.addForm.nickName': '昵称', + 'team.user.addForm.email': '邮箱', + 'team.user.addForm.password': '密码', + 'team.user.addForm.roleCode': '角色', + 'team.user.addForm.roleCode.admin': '管理员', + 'team.user.addForm.roleCode.user': '用户', + 'team.user.addForm.status': '状态', + 'team.user.addForm.status.valid': '有效', + 'team.user.addForm.status.invalid': '无效', + + 'team.team.name': '团队', + 'team.team.addForm.code': '团队编码', + 'team.team.addForm.name': '团队名', + 'team.team.addForm.status': '状态', + 'team.team.addForm.status.valid': '有效', + 'team.team.addForm.status.invalid': '无效', + 'team.team.addForm.description': '描述', +}; diff --git a/chat2db-client/src/pages/login/index.tsx b/chat2db-client/src/pages/login/index.tsx index c03bf476..3394e2e5 100644 --- a/chat2db-client/src/pages/login/index.tsx +++ b/chat2db-client/src/pages/login/index.tsx @@ -6,6 +6,7 @@ import LogoImg from '@/assets/logo/logo.png'; import styles from './index.less'; import Setting from '@/blocks/Setting'; import Iconfont from '@/components/Iconfont'; +import i18n from '@/i18n'; interface IFormData { userName: string; @@ -27,32 +28,32 @@ const App: React.FC = () => {
Chat2DB
-
欢迎使用 Chat2DB
+
{i18n('login.text.welcome')}
- Chat2DB 账号仅用于团队协作管理 + {i18n('login.text.tips')}
} > -
为什么需要登录?
+
{i18n('login.text.tips.title')}
- + - - + + @@ -65,7 +66,7 @@ const App: React.FC = () => { icon={} className={styles.settingBtn} > - 设 置 + {i18n('login.text.setting')} } /> diff --git a/chat2db-client/src/pages/main/connection/index.tsx b/chat2db-client/src/pages/main/connection/index.tsx index 1eefe3ad..437953ab 100644 --- a/chat2db-client/src/pages/main/connection/index.tsx +++ b/chat2db-client/src/pages/main/connection/index.tsx @@ -5,7 +5,7 @@ import ConnectionEdit from '@/components/ConnectionEdit'; import Iconfont from '@/components/Iconfont'; import connectionService from '@/service/connection'; import { DatabaseTypeCode, databaseMap, databaseTypeList } from '@/constants'; -import { IDatabase, IConnectionDetails } from '@/typings'; +import { IDatabase, IConnectionDetails, IEnvironmentVO } from '@/typings'; import { Button, Dropdown, Modal } from 'antd'; import { MoreOutlined } from '@ant-design/icons'; import styles from './index.less'; @@ -13,6 +13,7 @@ import { connect, history, Dispatch } from 'umi'; import { IConnectionModelType } from '@/models/connection'; import { IWorkspaceModelType } from '@/models/workspace'; + interface IMenu { key: number; label: string; @@ -20,16 +21,19 @@ interface IMenu { meta: IConnectionDetails; } +// interface IConnectionList { +// environment: 'dev' | 'test' | 'prod'; +// connectionList: IMenu[]; +// } + interface IProps { connectionModel: IConnectionModelType['state']; - workspaceModel: IWorkspaceModelType['state']; dispatch: any; } function Connections(props: IProps) { - const { connectionModel, workspaceModel, dispatch } = props; + const { connectionModel, dispatch } = props; const { connectionList } = connectionModel; - const { curWorkspaceParams } = workspaceModel; const volatileRef = useRef(); const [curConnection, setCurConnection] = useState>({}); diff --git a/chat2db-client/src/pages/main/index.tsx b/chat2db-client/src/pages/main/index.tsx index f6bc56cf..17e9b687 100644 --- a/chat2db-client/src/pages/main/index.tsx +++ b/chat2db-client/src/pages/main/index.tsx @@ -18,6 +18,7 @@ import { getUser, userLogout } from '@/service/user'; import { ILoginUser } from '@/typings/user'; import { Dropdown } from 'antd'; import Team from './team'; +import i18n from '@/i18n'; let navConfig: INavItem[] = [ { @@ -75,8 +76,8 @@ function MainPage(props: IProps) { if (res.admin) { navConfig.splice(3, 0, { key: 'team', - icon: '\ue66d', - iconFontSize: 20, + icon: '\ue64b', + iconFontSize: 24, isLoad: false, component: , }); @@ -139,14 +140,14 @@ function MainPage(props: IProps) { items: [ { key: '1', - label:
退出登录
, + label:
{i18n('login.text.logout')}
, }, ], }} placement="bottomRight" arrow={{ pointAtCenter: true }} > - + ); }; diff --git a/chat2db-client/src/pages/main/team/datasource-management/index.tsx b/chat2db-client/src/pages/main/team/datasource-management/index.tsx index dec11728..815b461f 100644 --- a/chat2db-client/src/pages/main/team/datasource-management/index.tsx +++ b/chat2db-client/src/pages/main/team/datasource-management/index.tsx @@ -159,7 +159,7 @@ function DataSourceManagement() { enterButton={} /> } />
data.name, searchValue: (data: ITeamAndUserVO) => JSON.stringify({ id: data.id, type: data.type }), searchListKey: 'accessObjectList', - placeholder: '搜索人员/团队', + placeholder: i18n('team.action.addUserAndTeam.placeholder'), }, [SearchType.TEAM]: { - title: '添加团队', + title: i18n('team.action.addTeam'), loadRequest: getCommonTeamList, searchLabel: (data: ITeamVO) => data.name, searchValue: (data: ITeamVO) => data.id, searchListKey: 'teamIdList', - placeholder: '搜索团队', + placeholder: i18n('team.action.addTeam.placeholder'), }, [SearchType.USER]: { - title: '添加人员', + title: i18n('team.action.addUser'), loadRequest: getCommonUserList, searchLabel: (data: IUserVO) => data.userName, searchValue: (data: IUserVO) => data.id, searchListKey: 'userIdList', - placeholder: '搜索人员', + placeholder: i18n('team.action.addUser.placeholder'), }, [SearchType.DATASOURCE]: { - title: '添加链接', + title: i18n('team.action.addDatasource'), loadRequest: getCommonDataSourceList, searchLabel: (data: IDataSourceVO) => data.alias, searchValue: (data: IDataSourceVO) => data.id, searchListKey: 'dataSourceIdList', - placeholder: '搜索链接', + placeholder: i18n('team.action.addDatasource.placeholder'), }, -} +}; function UniversalAddModal(props: IProps) { const { open, type } = props; const [fetching, setFetching] = useState(false); const [options, setOptions] = useState([]); - const [selectedValues, setSelectedValues] = useState([]) + const [selectedValues, setSelectedValues] = useState([]); const authData = useMemo(() => { if (type) { - return addAuthMap[type] + return addAuthMap[type]; } - }, [type]) + }, [type]); const loadOptions = (value: string) => { setOptions([]); @@ -91,14 +97,15 @@ function UniversalAddModal(props: IProps) { } const realValue = { - [authData.searchListKey]: type !== SearchType['USER/TEAM'] ? selectedValues : selectedValues.map(i => JSON.parse(i)) - } + [authData.searchListKey]: + type !== SearchType['USER/TEAM'] ? selectedValues : selectedValues.map((i) => JSON.parse(i)), + }; - props.onConfirm(realValue) + props.onConfirm(realValue); props.onClose && props.onClose(); setSelectedValues([]); setOptions([]); - } + }; return ( { - setSelectedValues(values) + setSelectedValues(values); }} /> diff --git a/chat2db-client/src/pages/main/team/universal-drawer/index.tsx b/chat2db-client/src/pages/main/team/universal-drawer/index.tsx index 2631f9c8..cd20d0be 100644 --- a/chat2db-client/src/pages/main/team/universal-drawer/index.tsx +++ b/chat2db-client/src/pages/main/team/universal-drawer/index.tsx @@ -1,8 +1,36 @@ import { Button, Drawer, Input, message, Popconfirm, Table, Tag } from 'antd'; import React, { useEffect, useMemo, useState } from 'react'; import { SearchOutlined, PlusOutlined } from '@ant-design/icons'; -import { AffiliationType, IDataSourceAccessVO, IDataSourceVO, ITeamVO, ITeamWithDataSourceVO, ITeamWithUserVO, IUserVO, IUserWithDataSourceVO, IUserWithTeamVO, ManagementType, SearchType, } from '@/typings/team'; -import { deleteDataSourceFromTeam, deleteDataSourceFromUser, deleteTeamListFromUser, deleteUserFromTeam, deleteUserOrTeamFromDataSource, getDataSourceListFromTeam, getDataSourceListFromUser, getTeamListFromUser, getUserAndTeamListFromDataSource, getUserListFromTeam, updateDataSourceListFromTeam, updateDataSourceListFromUser, updateTeamListFromUser, updateUserAndTeamListFromDataSource, updateUserListFromTeam } from '@/service/team'; +import { + AffiliationType, + IDataSourceAccessVO, + IDataSourceVO, + ITeamVO, + ITeamWithDataSourceVO, + ITeamWithUserVO, + IUserVO, + IUserWithDataSourceVO, + IUserWithTeamVO, + ManagementType, + SearchType, +} from '@/typings/team'; +import { + deleteDataSourceFromTeam, + deleteDataSourceFromUser, + deleteTeamListFromUser, + deleteUserFromTeam, + deleteUserOrTeamFromDataSource, + getDataSourceListFromTeam, + getDataSourceListFromUser, + getTeamListFromUser, + getUserAndTeamListFromDataSource, + getUserListFromTeam, + updateDataSourceListFromTeam, + updateDataSourceListFromUser, + updateTeamListFromUser, + updateUserAndTeamListFromDataSource, + updateUserListFromTeam, +} from '@/service/team'; import UniversalAddModal from '../universal-add-modal'; import styles from './index.less'; @@ -31,11 +59,10 @@ interface IAffiliationDetail { function UniversalDrawer(props: IProps) { const { type, open } = props; const [dataSource, setDataSource] = useState>([]); - const [isModalVisible, setIsModalVisible] = useState(false); const [modalInfo, setModalInfo] = useState<{ open: boolean; type?: SearchType }>({ open: false, }); - const [searchInput, setSearchInput] = useState('') + const [searchInput, setSearchInput] = useState(''); const [pagination, setPagination] = useState({ searchKey: '', @@ -51,24 +78,24 @@ function UniversalDrawer(props: IProps) { [AffiliationType.USER_TEAM]: { type: AffiliationType.USER_TEAM, searchType: SearchType.TEAM, - title: '团队', + title: i18n('team.team.name'), byIdKey: 'userId', queryListApi: getTeamListFromUser, updateListApi: updateTeamListFromUser, deleteApi: deleteTeamListFromUser, columns: [ { - title: '团队编码', + title: i18n('team.team.addForm.code'), dataIndex: ['team', 'code'], - key: 'team.code' + key: 'team.code', }, { - title: '团队名称', + title: i18n('team.team.addForm.name'), dataIndex: ['team', 'name'], - key: 'team.name' + key: 'team.name', }, { - title: '操作', + title: i18n('common.text.action'), key: 'action', width: 100, render: (_: any, record: IUserWithTeamVO) => ( @@ -79,39 +106,40 @@ function UniversalDrawer(props: IProps) { onConfirm={async () => { if (record.id !== undefined) { await deleteTeamListFromUser({ id: record.id }); - message.success(i18n('common.text.successfullyDelete')) + message.success(i18n('common.text.successfullyDelete')); queryTableList(); } - }}> - e.preventDefault()}> + }} + > + e.preventDefault()}> {i18n('common.button.delete')} - ) - } - ] + ), + }, + ], }, [AffiliationType.USER_DATASOURCE]: { type: AffiliationType.USER_DATASOURCE, searchType: SearchType.DATASOURCE, - title: '归属链接', + title: i18n('team.datasource.rightManagement'), byIdKey: 'userId', queryListApi: getDataSourceListFromUser, updateListApi: updateDataSourceListFromUser, deleteApi: deleteDataSourceFromUser, columns: [ { - title: '链接名称', + title: i18n('team.datasource.alias'), dataIndex: ['dataSource', 'alias'], - key: 'dataSource.alias' + key: 'dataSource.alias', }, { - title: '链接地址', + title: i18n('team.datasource.url'), dataIndex: ['dataSource', 'url'], - key: 'dataSource.url' + key: 'dataSource.url', }, { - title: '操作', + title: i18n('common.text.action'), key: 'action', width: 100, render: (_: any, record: IUserWithDataSourceVO) => ( @@ -122,39 +150,40 @@ function UniversalDrawer(props: IProps) { onConfirm={async () => { if (record.id !== undefined) { await deleteDataSourceFromUser({ id: record.id }); - message.success(i18n('common.text.successfullyDelete')) + message.success(i18n('common.text.successfullyDelete')); queryTableList(); } - }}> - e.preventDefault()}> + }} + > + e.preventDefault()}> {i18n('common.button.delete')} - ) - } - ] + ), + }, + ], }, [AffiliationType.TEAM_USER]: { type: AffiliationType.TEAM_USER, searchType: SearchType.USER, - title: '用户', + title: i18n('team.user.name'), byIdKey: 'teamId', queryListApi: getUserListFromTeam, updateListApi: updateUserListFromTeam, deleteApi: deleteUserFromTeam, columns: [ { - title: '用户名', + title: i18n('team.user.addForm.userName'), dataIndex: ['user', 'userName'], - key: 'user.userName' + key: 'user.userName', }, { - title: '昵称', + title: i18n('team.user.addForm.nickName'), dataIndex: ['user', 'nickName'], - key: 'user.nickName' + key: 'user.nickName', }, { - title: '操作', + title: i18n('common.text.action'), key: 'action', width: 100, render: (_: any, record: ITeamWithUserVO) => ( @@ -165,39 +194,40 @@ function UniversalDrawer(props: IProps) { onConfirm={async () => { if (record.id !== undefined) { await deleteUserFromTeam({ id: record.id }); - message.success(i18n('common.text.successfullyDelete')) + message.success(i18n('common.text.successfullyDelete')); queryTableList(); } - }}> - e.preventDefault()}> + }} + > + e.preventDefault()}> {i18n('common.button.delete')} - ) - } - ] + ), + }, + ], }, [AffiliationType.TEAM_DATASOURCE]: { type: AffiliationType.TEAM_DATASOURCE, searchType: SearchType.DATASOURCE, - title: '归属链接', + title: i18n('team.action.affiliation.datasource'), byIdKey: 'teamId', queryListApi: getDataSourceListFromTeam, updateListApi: updateDataSourceListFromTeam, deleteApi: deleteDataSourceFromTeam, columns: [ { - title: '链接名称', + title: i18n('team.datasource.alias'), dataIndex: ['dataSource', 'alias'], - key: 'dataSource.alias' + key: 'dataSource.alias', }, { - title: '链接地址', + title: i18n('team.datasource.url'), dataIndex: ['dataSource', 'url'], - key: 'dataSource.url' + key: 'dataSource.url', }, { - title: '操作', + title: i18n('common.text.action'), key: 'action', width: 100, render: (_: any, record: ITeamWithDataSourceVO) => ( @@ -208,45 +238,48 @@ function UniversalDrawer(props: IProps) { onConfirm={async () => { if (record.id !== undefined) { await deleteDataSourceFromUser({ id: record.id }); - message.success(i18n('common.text.successfullyDelete')) + message.success(i18n('common.text.successfullyDelete')); queryTableList(); } - }}> - e.preventDefault()}> + }} + > + e.preventDefault()}> {i18n('common.button.delete')} - ) - } - ] + ), + }, + ], }, [AffiliationType['DATASOURCE_USER/TEAM']]: { type: AffiliationType['DATASOURCE_USER/TEAM'], searchType: SearchType['USER/TEAM'], - title: '链接权限管理', + title: i18n('team.datasource.rightManagement'), byIdKey: 'dataSourceId', queryListApi: getUserAndTeamListFromDataSource, updateListApi: updateUserAndTeamListFromDataSource, deleteApi: deleteUserOrTeamFromDataSource, columns: [ { - title: '编码', + title: i18n('team.datasource.code'), dataIndex: ['accessObject', 'code'], - key: 'accessObject.code' + key: 'accessObject.code', }, { - title: '名称', + title: i18n('team.datasource.name'), dataIndex: ['accessObject', 'name'], - key: 'accessObject.name' + key: 'accessObject.name', }, { - title: '类型', + title: i18n('team.datasource.status'), dataIndex: ['accessObject', 'type'], key: 'accessObject.type', - render: (status: ManagementType) => {status} + render: (status: ManagementType) => ( + {status} + ), }, { - title: '操作', + title: i18n('common.text.action'), key: 'action', width: 100, render: (_: any, record: IDataSourceAccessVO) => ( @@ -257,25 +290,29 @@ function UniversalDrawer(props: IProps) { onConfirm={async () => { if (record.id !== undefined) { await deleteUserOrTeamFromDataSource({ id: record.id }); - message.success(i18n('common.text.successfullyDelete')) + message.success(i18n('common.text.successfullyDelete')); queryTableList(); } - }}> - e.preventDefault()}> + }} + > + e.preventDefault()}> {i18n('common.button.delete')} - ) - } - ] - } + ), + }, + ], + }, }), [props.byId, type], ); - const managementDataByType = type ? managementMap[type] : null + const managementDataByType = type ? managementMap[type] : null; useEffect(() => { + if (!open) { + return; + } setSearchInput(''); setPagination({ searchKey: '', @@ -289,19 +326,24 @@ function UniversalDrawer(props: IProps) { open: false, type: managementDataByType?.searchType, }); - }, [props.byId]); + }, [props.byId, type, open]); useEffect(() => { queryTableList(); - }, [pagination.current, pagination.pageSize, pagination.searchKey, props.byId, type]); + }, [pagination]); - const queryTableList = async () => { - const { searchKey, current: pageNo, pageSize } = pagination; + const queryTableList = async (searchKey?: string) => { + const { current: pageNo, pageSize } = pagination; const requestApi = managementDataByType?.queryListApi; if (!requestApi || !isNumber(props.byId)) { return; } - let res = await requestApi({ searchKey, pageNo, pageSize, [managementDataByType?.byIdKey]: props.byId }); + let res = await requestApi({ + searchKey: searchKey || pagination.searchKey, + pageNo, + pageSize, + [managementDataByType?.byIdKey]: props.byId, + }); if (res) { setDataSource(res?.data ?? []); } @@ -310,8 +352,8 @@ function UniversalDrawer(props: IProps) { const handleSearch = (searchKey: string) => { setPagination({ ...pagination, - searchKey - }) + searchKey, + }); }; if (!managementDataByType) { @@ -323,7 +365,7 @@ function UniversalDrawer(props: IProps) {
setSearchInput(v.target.value)} onSearch={handleSearch} @@ -336,11 +378,11 @@ function UniversalDrawer(props: IProps) { setModalInfo({ ...modalInfo, open: true, - type: managementDataByType.searchType + type: managementDataByType.searchType, }); }} > - 添加 + {i18n('common.button.add')}
@@ -348,10 +390,10 @@ function UniversalDrawer(props: IProps) { { - managementDataByType.updateListApi({ [managementDataByType.byIdKey]: props.byId, ...values }).then(res => { - message.success('更新成功') - queryTableList() - }) + managementDataByType.updateListApi({ [managementDataByType.byIdKey]: props.byId, ...values }).then((res) => { + message.success(i18n('common.tips.updateSuccess')); + queryTableList(); + }); }} onClose={() => { setModalInfo({ diff --git a/chat2db-client/src/typings/index.ts b/chat2db-client/src/typings/index.ts index d2aad71e..bc1fe32c 100644 --- a/chat2db-client/src/typings/index.ts +++ b/chat2db-client/src/typings/index.ts @@ -5,4 +5,5 @@ export * from './database'; export * from './main'; export * from './theme'; export * from './tree'; -export * from './setting' \ No newline at end of file +export * from './setting' +export * from './team' \ No newline at end of file diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/DataSourceCreateParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/DataSourceCreateParam.java index 5a8496aa..c86e357f 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/DataSourceCreateParam.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/DataSourceCreateParam.java @@ -7,6 +7,7 @@ import ai.chat2db.spi.model.KeyValue; import ai.chat2db.spi.model.SSHInfo; import ai.chat2db.spi.model.SSLInfo; +import jakarta.validation.constraints.NotNull; import lombok.Data; /** @@ -101,4 +102,10 @@ public class DataSourceCreateParam { * @see ai.chat2db.server.domain.api.enums.DataSourceKindEnum */ private String kind; + + /** + * 环境id + */ + @NotNull + private Long environmentId; } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/DataSourceService.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/DataSourceService.java index ca7c23de..e9f70631 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/DataSourceService.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/DataSourceService.java @@ -64,7 +64,7 @@ public interface DataSourceService { * @return * @throws ai.chat2db.server.tools.common.exception.DataNotFoundException */ - DataResult queryExistent(@NotNull Long id); + DataResult queryExistent(@NotNull Long id, DataSourceSelector selector); /** * 克隆连接 diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/ChartServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/ChartServiceImpl.java index 3b5b5a47..1148f103 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/ChartServiceImpl.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/ChartServiceImpl.java @@ -26,6 +26,7 @@ import ai.chat2db.server.tools.base.wrapper.result.DataResult; import ai.chat2db.server.tools.base.wrapper.result.ListResult; import ai.chat2db.server.tools.common.exception.DataNotFoundException; import ai.chat2db.server.tools.common.model.EasyLambdaQueryWrapper; +import ai.chat2db.server.tools.common.util.ContextUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -59,6 +60,7 @@ public class ChartServiceImpl implements ChartService { param.setGmtCreate(LocalDateTime.now()); param.setGmtModified(LocalDateTime.now()); param.setDeleted(YesOrNoEnum.NO.getLetter()); + param.setUserId(ContextUtils.getUserId()); ChartDO chartDO = chartConverter.param2do(param); chartMapper.insert(chartDO); return DataResult.of(chartDO.getId()); diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceServiceImpl.java index 953deb10..0f275156 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceServiceImpl.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceServiceImpl.java @@ -45,6 +45,7 @@ import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.common.collect.Lists; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -117,7 +118,7 @@ public class DataSourceServiceImpl implements DataSourceService { @Override public DataResult updateWithPermission(DataSourceUpdateParam param) { - DataSource dataSource = queryExistent(param.getId()).getData(); + DataSource dataSource = queryExistent(param.getId(), null).getData(); PermissionUtils.checkOperationPermission(dataSource.getUserId()); DataSourceDO dataSourceDO = dataSourceConverter.param2do(param); @@ -129,7 +130,7 @@ public class DataSourceServiceImpl implements DataSourceService { @Override public ActionResult deleteWithPermission(Long id) { - DataSource dataSource = queryExistent(id).getData(); + DataSource dataSource = queryExistent(id, null).getData(); PermissionUtils.checkOperationPermission(dataSource.getUserId()); dataSourceMapper.deleteById(id); @@ -143,17 +144,20 @@ public class DataSourceServiceImpl implements DataSourceService { } @Override - public DataResult queryExistent(Long id) { + public DataResult queryExistent(Long id, DataSourceSelector selector) { DataResult dataResult = queryById(id); if (dataResult.getData() == null) { throw new DataNotFoundException(); } + + fillData(Lists.newArrayList(dataResult.getData()), selector); + return dataResult; } @Override public DataResult copyByIdWithPermission(Long id) { - DataSource dataSource = queryExistent(id).getData(); + DataSource dataSource = queryExistent(id, null).getData(); PermissionUtils.checkOperationPermission(dataSource.getUserId()); DataSourceDO dataSourceDO = dataSourceMapper.selectById(id); @@ -191,7 +195,7 @@ public class DataSourceServiceImpl implements DataSourceService { IPage iPage = dataSourceCustomMapper.selectPageWithPermission( new Page<>(param.getPageNo(), param.getPageSize()), - BooleanUtils.isTrue(loginUser.getAdmin()), loginUser.getId(), param.getSearchKey(),param.getKind(), + BooleanUtils.isTrue(loginUser.getAdmin()), loginUser.getId(), param.getSearchKey(), param.getKind(), EasySqlUtils.orderBy(param.getOrderByList())); List dataSources = dataSourceConverter.do2dto(iPage.getRecords()); diff --git a/chat2db-server/chat2db-server-start/src/test/java/ai/chat2db/server/start/test/dto 2/TestDTO.java b/chat2db-server/chat2db-server-start/src/test/java/ai/chat2db/server/start/test/dto 2/TestDTO.java new file mode 100644 index 00000000..0646e0b6 --- /dev/null +++ b/chat2db-server/chat2db-server-start/src/test/java/ai/chat2db/server/start/test/dto 2/TestDTO.java @@ -0,0 +1,22 @@ +package ai.chat2db.server.start.test.dto; + +import java.io.Serial; +import java.io.Serializable; + +import ai.chat2db.server.tools.base.constant.EasyToolsConstant; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class TestDTO implements Serializable { + + @Serial + private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID; + + private String name; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/common/request/TeamUserPageQueryRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/common/request/TeamUserPageQueryRequest.java new file mode 100644 index 00000000..53a5c01a --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/common/request/TeamUserPageQueryRequest.java @@ -0,0 +1,27 @@ + +package ai.chat2db.server.admin.api.controller.common.request; + +import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum; +import ai.chat2db.server.tools.base.wrapper.request.PageQueryRequest; +import lombok.Data; + +/** + * Common pagination query + * + * @author Jiaju Zhuang + */ +@Data +public class TeamUserPageQueryRequest extends PageQueryRequest { + + /** + * 授权类型 + * + * @see AccessObjectTypeEnum + */ + private String type; + + /** + * searchKey + */ + private String searchKey; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/common/vo/TeamUserListVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/common/vo/TeamUserListVO.java new file mode 100644 index 00000000..7b2b55f2 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/common/vo/TeamUserListVO.java @@ -0,0 +1,50 @@ + +package ai.chat2db.server.admin.api.controller.common.vo; + +import java.io.Serial; +import java.io.Serializable; + +import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum; +import ai.chat2db.server.tools.base.constant.EasyToolsConstant; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * DataSource Access Object + * It could be a user or a team + * + * @author Jiaju Zhuang + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class TeamUserListVO implements Serializable { + + @Serial + private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID; + + /** + * 授权id,根据类型区分是用户还是团队 + */ + private Long id; + + /** + * 授权类型 + * + * @see AccessObjectTypeEnum + */ + private String type; + + /** + * The name of the code that belongs to the authorization type, such as user account, team code + */ + private String code; + + /** + * Code that belongs to the authorization type, such as user name, team name + */ + private String name; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/converter/DataSourceAccessAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/converter/DataSourceAccessAdminConverter.java new file mode 100644 index 00000000..f97e2098 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/converter/DataSourceAccessAdminConverter.java @@ -0,0 +1,50 @@ +package ai.chat2db.server.admin.api.controller.datasource.converter; + +import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessBatchCreateRequest; +import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessPageQueryRequest; +import ai.chat2db.server.admin.api.controller.datasource.vo.DataSourceAccessPageQueryVO; +import ai.chat2db.server.domain.api.enums.DataSourceKindEnum; +import ai.chat2db.server.domain.api.model.DataSourceAccess; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Mapper(componentModel = "spring", imports = {DataSourceKindEnum.class}) +public abstract class DataSourceAccessAdminConverter { + + /** + * convert + * + * @param request + * @return + */ + @Mappings({ + @Mapping(source = "searchKey", target = "userOrTeamSearchKey"), + @Mapping(target = "enableReturnCount", expression = "java(true)"), + }) + public abstract DataSourceAccessComprehensivePageQueryParam request2param(DataSourceAccessPageQueryRequest request); + + /** + * convert + * + * @param request + * @return + */ + public abstract DataSourceAccessBatchCreatParam request2param(DataSourceAccessBatchCreateRequest request); + + /** + * conversion + * + * @param dto + * @return + */ + public abstract DataSourceAccessPageQueryVO dto2vo(DataSourceAccess dto); + +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/converter/DataSourceAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/converter/DataSourceAdminConverter.java new file mode 100644 index 00000000..5236de60 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/converter/DataSourceAdminConverter.java @@ -0,0 +1,76 @@ +package ai.chat2db.server.admin.api.controller.datasource.converter; + +import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceCreateRequest; +import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceUpdateRequest; +import ai.chat2db.server.admin.api.controller.datasource.vo.DataSourcePageQueryVO; +import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.domain.api.enums.DataSourceKindEnum; +import ai.chat2db.server.domain.api.model.DataSource; +import ai.chat2db.server.domain.api.param.datasource.DataSourceCreateParam; +import ai.chat2db.server.domain.api.param.datasource.DataSourcePageQueryParam; +import ai.chat2db.server.domain.api.param.datasource.DataSourceUpdateParam; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Mapper(componentModel = "spring",imports = {DataSourceKindEnum.class}) +public abstract class DataSourceAdminConverter { + + /** + * conversion + * + * @param request + * @return + */ + @Mappings({ + @Mapping(target = "enableReturnCount", expression = "java(true)"), + }) + public abstract DataSourcePageQueryParam request2param(CommonPageQueryRequest request); + + /** + * conversion + * + * @param request + * @return + */ + @Mappings({ + @Mapping(target = "enableReturnCount", expression = "java(true)"), + }) + public abstract DataSourcePageQueryParam request2paramAccess(CommonPageQueryRequest request); + + /** + * conversion + * + * @param dto + * @return + */ + public abstract DataSourcePageQueryVO dto2vo(DataSource dto); + + /** + * 参数转换 + * + * @param request + * @return + */ + @Mappings({ + @Mapping(source = "user", target = "userName"), + @Mapping(target = "kind", expression = "java(DataSourceKindEnum.SHARED.getCode())"), + }) + public abstract DataSourceCreateParam createReq2param(DataSourceCreateRequest request); + + /** + * 参数转换 + * + * @param request + * @return + */ + @Mappings({ + @Mapping(source = "user", target = "userName") + }) + public abstract DataSourceUpdateParam updateReq2param(DataSourceUpdateRequest request); +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceAccessBatchCreateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceAccessBatchCreateRequest.java new file mode 100644 index 00000000..14d17940 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceAccessBatchCreateRequest.java @@ -0,0 +1,33 @@ +package ai.chat2db.server.admin.api.controller.datasource.request; + +import java.util.List; + +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * create + * + * @author Jiaju Zhuang + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class DataSourceAccessBatchCreateRequest { + + /** + * 数据源id + */ + @NotNull + private Long dataSourceId; + + /** + * DataSource Access Object + */ + @NotNull + private List accessObjectList; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceAccessObjectRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceAccessObjectRequest.java new file mode 100644 index 00000000..e0bdf202 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceAccessObjectRequest.java @@ -0,0 +1,41 @@ + +package ai.chat2db.server.admin.api.controller.datasource.request; + +import java.io.Serial; +import java.io.Serializable; + +import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum; +import ai.chat2db.server.tools.base.constant.EasyToolsConstant; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * DataSource Access Object + * It could be a user or a team + * + * @author Jiaju Zhuang + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class DataSourceAccessObjectRequest implements Serializable { + + @Serial + private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID; + + /** + * 授权id,根据类型区分是用户还是团队 + */ + private Long id; + + /** + * 授权类型 + * + * @see AccessObjectTypeEnum + */ + private String type; + +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceAccessPageQueryRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceAccessPageQueryRequest.java new file mode 100644 index 00000000..f833609b --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceAccessPageQueryRequest.java @@ -0,0 +1,26 @@ + +package ai.chat2db.server.admin.api.controller.datasource.request; + +import ai.chat2db.server.tools.base.wrapper.request.PageQueryRequest; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Common pagination query + * + * @author Jiaju Zhuang + */ +@Data +public class DataSourceAccessPageQueryRequest extends PageQueryRequest { + + /** + * 数据源id + */ + @NotNull + private Long dataSourceId; + + /** + * searchKey + */ + private String searchKey; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceCloneRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceCloneRequest.java new file mode 100644 index 00000000..54386e61 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceCloneRequest.java @@ -0,0 +1,19 @@ +package ai.chat2db.server.admin.api.controller.datasource.request; + + +import lombok.Data; + +/** + * @author moji + * @version ConnectionCloneRequest.java, v 0.1 2022年09月16日 14:23 moji Exp $ + * @date 2022/09/16 + */ +@Data +public class DataSourceCloneRequest { + + /** + * 主键id + */ + private Long id; + +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceCreateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceCreateRequest.java new file mode 100644 index 00000000..b8606a5e --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceCreateRequest.java @@ -0,0 +1,106 @@ +package ai.chat2db.server.admin.api.controller.datasource.request; + +import java.util.List; + +import ai.chat2db.spi.config.DriverConfig; +import ai.chat2db.spi.model.KeyValue; +import ai.chat2db.spi.model.SSHInfo; +import ai.chat2db.spi.model.SSLInfo; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author moji + * @version ConnectionCreateRequest.java, v 0.1 2022年09月16日 14:23 moji Exp $ + * @date 2022/09/16 + */ +@Data +public class DataSourceCreateRequest { + + /** + * 连接别名 + */ + private String alias; + + /** + * 连接地址 + */ + @NotNull + private String url; + + /** + * 连接用户名 + */ + private String user; + + /** + * 密码 + */ + @NotNull + private String password; + + /** + * 认证类型 + */ + private String authenticationType; + + /** + * 连接类型 + */ + @NotNull + private String type; + + /** + * host + */ + private String host; + + /** + * port + */ + private String port; + + /** + * ssh + */ + private SSHInfo ssh; + + /** + * ssh + */ + private SSLInfo ssl; + + /** + * sid + */ + private String sid; + + /** + * driver + */ + private String driver; + + + /** + * jdbc版本 + */ + private String jdbc; + /** + * 扩展信息 + */ + private List extendInfo; + + + /** + * 驱动配置 + */ + private DriverConfig driverConfig; + + /** + * 环境id + */ + @NotNull + private Long environmentId; + + +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceUpdateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceUpdateRequest.java new file mode 100644 index 00000000..ae779838 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceUpdateRequest.java @@ -0,0 +1,108 @@ +package ai.chat2db.server.admin.api.controller.datasource.request; + +import java.util.List; + +import ai.chat2db.spi.config.DriverConfig; +import ai.chat2db.spi.model.KeyValue; +import ai.chat2db.spi.model.SSHInfo; +import ai.chat2db.spi.model.SSLInfo; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author moji + * @version ConnectionCreateRequest.java, v 0.1 2022年09月16日 14:23 moji Exp $ + * @date 2022/09/16 + */ +@Data +public class DataSourceUpdateRequest { + + /** + * 主键id + */ + @NotNull + private Long id; + + /** + * 连接别名 + */ + private String alias; + + /** + * 连接地址 + */ + private String url; + + /** + * 连接用户 + */ + private String user; + + /** + * 密码 + */ + private String password; + + /** + * 连接类型 + */ + private String type; + + /** + * 环境类型 + * + * @see EnvTypeEnum + */ + private String envType; + + /** + * host + */ + private String host; + + /** + * port + */ + private String port; + + /** + * ssh + */ + private SSHInfo ssh; + + /** + * ssh + */ + private SSLInfo ssl; + + /** + * sid + */ + private String sid; + + /** + * driver + */ + private String driver; + + /** + * jdbc版本 + */ + private String jdbc; + + /** + * 扩展信息 + */ + private List extendInfo; + + /** + * 驱动配置 + */ + private DriverConfig driverConfig; + + /** + * 环境id + */ + @NotNull + private Long environmentId; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/vo/DataSourceAccessObjectVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/vo/DataSourceAccessObjectVO.java new file mode 100644 index 00000000..4d1ccb91 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/vo/DataSourceAccessObjectVO.java @@ -0,0 +1,50 @@ + +package ai.chat2db.server.admin.api.controller.datasource.vo; + +import java.io.Serial; +import java.io.Serializable; + +import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum; +import ai.chat2db.server.tools.base.constant.EasyToolsConstant; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * DataSource Access Object + * It could be a user or a team + * + * @author Jiaju Zhuang + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class DataSourceAccessObjectVO implements Serializable { + + @Serial + private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID; + + /** + * 授权id,根据类型区分是用户还是团队 + */ + private Long id; + + /** + * 授权类型 + * + * @see AccessObjectTypeEnum + */ + private String type; + + /** + * The name of the code that belongs to the authorization type, such as user account, team code + */ + private String code; + + /** + * Code that belongs to the authorization type, such as user name, team name + */ + private String name; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/vo/DataSourceAccessPageQueryVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/vo/DataSourceAccessPageQueryVO.java new file mode 100644 index 00000000..6d2220dc --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/vo/DataSourceAccessPageQueryVO.java @@ -0,0 +1,40 @@ + +package ai.chat2db.server.admin.api.controller.datasource.vo; + +import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Pagination query + * + * @author Jiaju Zhuang + */ +@Data +public class DataSourceAccessPageQueryVO { + + /** + * 主键 + */ + @NotNull + private Long id; + /** + * 授权类型 + * + * @see AccessObjectTypeEnum + */ + @NotNull + private String accessObjectType; + + /** + * 授权id,根据类型区分是用户还是团队 + */ + @NotNull + private Long accessObjectId; + + /** + * 授权对象 + */ + @NotNull + private DataSourceAccessObjectVO accessObject; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/vo/DataSourcePageQueryVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/vo/DataSourcePageQueryVO.java new file mode 100644 index 00000000..b77956d6 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/vo/DataSourcePageQueryVO.java @@ -0,0 +1,39 @@ + +package ai.chat2db.server.admin.api.controller.datasource.vo; + +import ai.chat2db.server.common.api.controller.vo.SimpleEnvironmentVO; +import lombok.Data; + +/** + * Pagination query + * + * @author Jiaju Zhuang + */ +@Data +public class DataSourcePageQueryVO { + + /** + * 主键id + */ + private Long id; + + /** + * 连接别名 + */ + private String alias; + + /** + * 连接地址 + */ + private String url; + + /** + * 环境id + */ + private Long environmentId; + + /** + * 环境 + */ + private SimpleEnvironmentVO environment; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/vo/SimpleDataSourceVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/vo/SimpleDataSourceVO.java new file mode 100644 index 00000000..8ae1f982 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/datasource/vo/SimpleDataSourceVO.java @@ -0,0 +1,39 @@ + +package ai.chat2db.server.admin.api.controller.datasource.vo; + +import ai.chat2db.server.common.api.controller.vo.SimpleEnvironmentVO; +import lombok.Data; + +/** + * Data Source + * + * @author Jiaju Zhuang + */ +@Data +public class SimpleDataSourceVO { + + /** + * 主键id + */ + private Long id; + + /** + * 连接别名 + */ + private String alias; + + /** + * 连接地址 + */ + private String url; + + /** + * 环境id + */ + private Long environmentId; + + /** + * 环境 + */ + private SimpleEnvironmentVO environment; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamAdminConverter.java new file mode 100644 index 00000000..a6eaf129 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamAdminConverter.java @@ -0,0 +1,62 @@ +package ai.chat2db.server.admin.api.controller.team.converter; + +import ai.chat2db.server.admin.api.controller.team.request.TeamCreateRequest; +import ai.chat2db.server.admin.api.controller.team.request.TeamUpdateRequest; +import ai.chat2db.server.admin.api.controller.team.vo.TeamPageQueryVO; +import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.domain.api.enums.DataSourceKindEnum; +import ai.chat2db.server.domain.api.model.Team; +import ai.chat2db.server.domain.api.param.team.TeamCreateParam; +import ai.chat2db.server.domain.api.param.team.TeamPageQueryParam; +import ai.chat2db.server.domain.api.param.team.TeamUpdateParam; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Mapper(componentModel = "spring",imports = {DataSourceKindEnum.class}) +public abstract class TeamAdminConverter { + + + /** + * conversion + * + * @param request + * @return + */ + @Mappings({ + @Mapping(target = "enableReturnCount", expression = "java(true)"), + }) + public abstract TeamPageQueryParam request2param(CommonPageQueryRequest request); + + + /** + * conversion + * + * @param dto + * @return + */ + public abstract TeamPageQueryVO dto2vo(Team dto); + + + /** + * conversion + * + * @param request + * @return + */ + public abstract TeamCreateParam request2param(TeamCreateRequest request); + + + /** + * conversion + * + * @param request + * @return + */ + public abstract TeamUpdateParam request2param(TeamUpdateRequest request); +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamDataSourcesAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamDataSourcesAdminConverter.java new file mode 100644 index 00000000..368041b6 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamDataSourcesAdminConverter.java @@ -0,0 +1,56 @@ +package ai.chat2db.server.admin.api.controller.team.converter; + +import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessBatchCreateRequest; +import ai.chat2db.server.admin.api.controller.team.request.TeamPageCommonQueryRequest; +import ai.chat2db.server.admin.api.controller.team.vo.TeamDataSourcePageQueryVO; +import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum; +import ai.chat2db.server.domain.api.enums.DataSourceKindEnum; +import ai.chat2db.server.domain.api.model.DataSourceAccess; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Mapper(componentModel = "spring", imports = {DataSourceKindEnum.class, AccessObjectTypeEnum.class}) +public abstract class TeamDataSourcesAdminConverter { + + /** + * convert + * + * @param request + * @return + */ + @Mappings({ + @Mapping(target = "accessObjectId", source = "teamId"), + @Mapping(target = "accessObjectType", expression = "java(AccessObjectTypeEnum.TEAM.name())"), + @Mapping(source = "searchKey", target = "dataSourceSearchKey"), + @Mapping(target = "enableReturnCount", expression = "java(true)"), + }) + public abstract DataSourceAccessComprehensivePageQueryParam request2param(TeamPageCommonQueryRequest request); + + /** + * convert + * + * @param request + * @return + */ + public abstract DataSourceAccessBatchCreatParam request2param(DataSourceAccessBatchCreateRequest request); + + /** + * conversion + * + * @param dto + * @return + */ + @Mappings({ + @Mapping(target = "teamId", source = "accessObjectId"), + }) + public abstract TeamDataSourcePageQueryVO dto2vo(DataSourceAccess dto); + +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamUserAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamUserAdminConverter.java new file mode 100644 index 00000000..42dc9f4e --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamUserAdminConverter.java @@ -0,0 +1,49 @@ +package ai.chat2db.server.admin.api.controller.team.converter; + +import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessBatchCreateRequest; +import ai.chat2db.server.admin.api.controller.team.request.TeamPageCommonQueryRequest; +import ai.chat2db.server.admin.api.controller.team.vo.TeamUserPageQueryVO; +import ai.chat2db.server.domain.api.model.TeamUser; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam; +import ai.chat2db.server.domain.api.param.team.user.TeamUserComprehensivePageQueryParam; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Mapper(componentModel = "spring") +public abstract class TeamUserAdminConverter { + + /** + * convert + * + * @param request + * @return + */ + @Mappings({ + @Mapping(source = "searchKey", target = "userSearchKey"), + @Mapping(target = "enableReturnCount", expression = "java(true)"), + }) + public abstract TeamUserComprehensivePageQueryParam request2param(TeamPageCommonQueryRequest request); + + /** + * convert + * + * @param request + * @return + */ + public abstract DataSourceAccessBatchCreatParam request2param(DataSourceAccessBatchCreateRequest request); + + /** + * conversion + * + * @param dto + * @return + */ + public abstract TeamUserPageQueryVO dto2vo(TeamUser dto); + +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamCreateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamCreateRequest.java new file mode 100644 index 00000000..1b3bcf9a --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamCreateRequest.java @@ -0,0 +1,38 @@ +package ai.chat2db.server.admin.api.controller.team.request; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * create + * + * @author Jiaju Zhuang + */ +@Data +public class TeamCreateRequest { + + /** + * 团队编码 + */ + @NotNull + private String code; + + /** + * 团队名称 + */ + @NotNull + private String name; + + /** + * 团队状态 + * + * @see ai.chat2db.server.domain.api.enums.ValidStatusEnum + */ + @NotNull + private String status; + + /** + * 团队描述 + */ + private String description; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamDataSourceBatchCreateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamDataSourceBatchCreateRequest.java new file mode 100644 index 00000000..58a13992 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamDataSourceBatchCreateRequest.java @@ -0,0 +1,34 @@ +package ai.chat2db.server.admin.api.controller.team.request; + +import java.util.List; + +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * create + * + * @author Jiaju Zhuang + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class TeamDataSourceBatchCreateRequest { + + /** + * team id + */ + @NotNull + private Long teamId; + + + /** + * Data Source id list + */ + @NotNull + private List dataSourceIdList; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamPageCommonQueryRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamPageCommonQueryRequest.java new file mode 100644 index 00000000..44862815 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamPageCommonQueryRequest.java @@ -0,0 +1,25 @@ + +package ai.chat2db.server.admin.api.controller.team.request; + +import ai.chat2db.server.tools.base.wrapper.request.PageQueryRequest; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Pagination query + * + * @author Jiaju Zhuang + */ +@Data +public class TeamPageCommonQueryRequest extends PageQueryRequest { + /** + * team id + */ + @NotNull + private Long teamId; + + /** + * searchKey + */ + private String searchKey; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamUpdateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamUpdateRequest.java new file mode 100644 index 00000000..623b517d --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamUpdateRequest.java @@ -0,0 +1,45 @@ +package ai.chat2db.server.admin.api.controller.team.request; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * update + * + * @author Jiaju Zhuang + */ +@Data +public class TeamUpdateRequest { + /** + * 主键 + */ + @NotNull + private Long id; + + /** + * 团队名称 + */ + @NotNull + private String name; + + /** + * 团队状态 + * + * @see ai.chat2db.server.domain.api.enums.ValidStatusEnum + */ + @NotNull + private String status; + + /** + * 角色编码 + * + * @see ai.chat2db.server.domain.api.enums.RoleCodeEnum + */ + @NotNull + private String roleCode; + + /** + * 团队描述 + */ + private String description; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamUserBatchCreateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamUserBatchCreateRequest.java new file mode 100644 index 00000000..6c983bcf --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamUserBatchCreateRequest.java @@ -0,0 +1,33 @@ +package ai.chat2db.server.admin.api.controller.team.request; + +import java.util.List; + +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * create + * + * @author Jiaju Zhuang + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class TeamUserBatchCreateRequest { + + /** + * team id + */ + @NotNull + private Long teamId; + + /** + * user id list + */ + @NotNull + private List userIdList; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/vo/SimpleTeamVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/vo/SimpleTeamVO.java new file mode 100644 index 00000000..f6b0bf5f --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/vo/SimpleTeamVO.java @@ -0,0 +1,37 @@ + +package ai.chat2db.server.admin.api.controller.team.vo; + +import lombok.Data; + +/** + * team + * + * @author Jiaju Zhuang + */ +@Data +public class SimpleTeamVO { + + /** + * 主键 + */ + private Long id; + + /** + * 团队编码 + */ + private String code; + + /** + * 团队名称 + */ + private String name; + + + /** + * 团队状态 + * + * @see ai.chat2db.server.domain.api.enums.ValidStatusEnum + */ + private String status; + +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/vo/TeamDataSourcePageQueryVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/vo/TeamDataSourcePageQueryVO.java new file mode 100644 index 00000000..7caa47de --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/vo/TeamDataSourcePageQueryVO.java @@ -0,0 +1,31 @@ + +package ai.chat2db.server.admin.api.controller.team.vo; + +import ai.chat2db.server.admin.api.controller.datasource.vo.SimpleDataSourceVO; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Pagination query + * + * @author Jiaju Zhuang + */ +@Data +public class TeamDataSourcePageQueryVO { + + /** + * 主键 + */ + @NotNull + private Long id; + + /** + * team id + */ + private Long teamId; + + /** + * Data Source + */ + private SimpleDataSourceVO dataSource; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/vo/TeamPageQueryVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/vo/TeamPageQueryVO.java new file mode 100644 index 00000000..75e2b9a5 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/vo/TeamPageQueryVO.java @@ -0,0 +1,57 @@ + +package ai.chat2db.server.admin.api.controller.team.vo; + +import java.util.Date; + +import ai.chat2db.server.common.api.controller.vo.SimpleUserVO; +import lombok.Data; + +/** + * Pagination query + * + * @author Jiaju Zhuang + */ +@Data +public class TeamPageQueryVO { + /** + * 主键 + */ + private Long id; + + /** + * 团队编码 + */ + private String code; + + /** + * 团队名称 + */ + private String name; + + /** + * 团队状态 + * + * @see ai.chat2db.server.domain.api.enums.ValidStatusEnum + */ + private String status; + + /** + * 团队描述 + */ + private String description; + + /** + * 修改时间 + */ + private Date gmtModified; + + /** + * 修改人用户id + */ + private Long modifiedUserId; + + /** + * 修改人用户 + */ + private SimpleUserVO modifiedUser; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/vo/TeamUserPageQueryVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/vo/TeamUserPageQueryVO.java new file mode 100644 index 00000000..a5520a23 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/team/vo/TeamUserPageQueryVO.java @@ -0,0 +1,28 @@ + +package ai.chat2db.server.admin.api.controller.team.vo; + +import ai.chat2db.server.admin.api.controller.user.vo.SimpleUserVO; +import lombok.Data; + +/** + * Pagination query + * + * @author Jiaju Zhuang + */ +@Data +public class TeamUserPageQueryVO { + /** + * 主键 + */ + private Long id; + + /** + * team id + */ + private Long teamId; + + /** + * user + */ + private SimpleUserVO user; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserAdminConverter.java new file mode 100644 index 00000000..28bc43b6 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserAdminConverter.java @@ -0,0 +1,57 @@ +package ai.chat2db.server.admin.api.controller.user.converter; + +import ai.chat2db.server.admin.api.controller.user.request.UserCreateRequest; +import ai.chat2db.server.admin.api.controller.user.request.UserUpdateRequest; +import ai.chat2db.server.admin.api.controller.user.vo.UserPageQueryVO; +import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.domain.api.model.User; +import ai.chat2db.server.domain.api.param.user.UserCreateParam; +import ai.chat2db.server.domain.api.param.user.UserPageQueryParam; +import ai.chat2db.server.domain.api.param.user.UserUpdateParam; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Mapper(componentModel = "spring") +public abstract class UserAdminConverter { + + /** + * conversion + * + * @param request + * @return + */ + @Mappings({ + @Mapping(target = "enableReturnCount", expression = "java(true)"), + }) + public abstract UserPageQueryParam request2param(CommonPageQueryRequest request); + + /** + * conversion + * + * @param dto + * @return + */ + public abstract UserPageQueryVO dto2vo(User dto); + + /** + * conversion + * + * @param request + * @return + */ + public abstract UserCreateParam request2param(UserCreateRequest request); + + /** + * conversion + * + * @param request + * @return + */ + public abstract UserUpdateParam request2param(UserUpdateRequest request); +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserDataSourcesAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserDataSourcesAdminConverter.java new file mode 100644 index 00000000..1de4822b --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserDataSourcesAdminConverter.java @@ -0,0 +1,56 @@ +package ai.chat2db.server.admin.api.controller.user.converter; + +import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessBatchCreateRequest; +import ai.chat2db.server.admin.api.controller.user.request.UserPageCommonQueryRequest; +import ai.chat2db.server.admin.api.controller.user.vo.UserDataSourcePageQueryVO; +import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum; +import ai.chat2db.server.domain.api.enums.DataSourceKindEnum; +import ai.chat2db.server.domain.api.model.DataSourceAccess; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Mapper(componentModel = "spring", imports = {DataSourceKindEnum.class, AccessObjectTypeEnum.class}) +public abstract class UserDataSourcesAdminConverter { + + /** + * convert + * + * @param request + * @return + */ + @Mappings({ + @Mapping(source = "userId", target = "accessObjectId"), + @Mapping(target = "accessObjectType", expression = "java(AccessObjectTypeEnum.USER.name())"), + @Mapping(source = "searchKey", target = "userOrTeamSearchKey"), + @Mapping(target = "enableReturnCount", expression = "java(true)"), + }) + public abstract DataSourceAccessComprehensivePageQueryParam request2param(UserPageCommonQueryRequest request); + + /** + * convert + * + * @param request + * @return + */ + public abstract DataSourceAccessBatchCreatParam request2param(DataSourceAccessBatchCreateRequest request); + + /** + * conversion + * + * @param dto + * @return + */ + @Mappings({ + @Mapping(target = "userId", source = "accessObjectId"), + }) + public abstract UserDataSourcePageQueryVO dto2vo(DataSourceAccess dto); + +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserTeamAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserTeamAdminConverter.java new file mode 100644 index 00000000..77424f29 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserTeamAdminConverter.java @@ -0,0 +1,38 @@ +package ai.chat2db.server.admin.api.controller.user.converter; + +import ai.chat2db.server.admin.api.controller.user.request.UserPageCommonQueryRequest; +import ai.chat2db.server.admin.api.controller.user.vo.UserTeamPageQueryVO; +import ai.chat2db.server.domain.api.model.TeamUser; +import ai.chat2db.server.domain.api.param.team.user.TeamUserComprehensivePageQueryParam; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Mapper(componentModel = "spring") +public abstract class UserTeamAdminConverter { + + /** + * convert + * + * @param request + * @return + */ + @Mappings({ + @Mapping(source = "searchKey", target = "teamSearchKey"), + @Mapping(target = "enableReturnCount", expression = "java(true)"), + }) + public abstract TeamUserComprehensivePageQueryParam request2param(UserPageCommonQueryRequest request); + + /** + * conversion + * + * @param dto + * @return + */ + public abstract UserTeamPageQueryVO dto2vo(TeamUser dto); +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserCreateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserCreateRequest.java new file mode 100644 index 00000000..4e2d1cd7 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserCreateRequest.java @@ -0,0 +1,54 @@ +package ai.chat2db.server.admin.api.controller.user.request; + +import ai.chat2db.server.domain.api.enums.RoleCodeEnum; +import ai.chat2db.server.domain.api.enums.ValidStatusEnum; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * create + *@author Jiaju Zhuang + */ +@Data +public class UserCreateRequest { + /** + * 用户名 + */ + @NotNull + private String userName; + + /** + * 密码 + */ + @NotNull + private String password; + + /** + * 昵称 + */ + @NotNull + private String nickName; + + /** + * 邮箱 + */ + @NotNull + private String email; + + + /** + * 角色编码 + * + * @see RoleCodeEnum + */ + @NotNull + private String roleCode; + + /** + * 用户状态 + * + * @see ValidStatusEnum + */ + @NotNull + private String status; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserDataSourceBatchCreateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserDataSourceBatchCreateRequest.java new file mode 100644 index 00000000..b396bb72 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserDataSourceBatchCreateRequest.java @@ -0,0 +1,32 @@ +package ai.chat2db.server.admin.api.controller.user.request; + +import java.util.List; + +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * create + * + * @author Jiaju Zhuang + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class UserDataSourceBatchCreateRequest { + + /** + * user id + */ + private Long userId; + + /** + * Data Source id list + */ + @NotNull + private List dataSourceIdList; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserPageCommonQueryRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserPageCommonQueryRequest.java new file mode 100644 index 00000000..c0e79a32 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserPageCommonQueryRequest.java @@ -0,0 +1,25 @@ + +package ai.chat2db.server.admin.api.controller.user.request; + +import ai.chat2db.server.tools.base.wrapper.request.PageQueryRequest; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Pagination query + * + * @author Jiaju Zhuang + */ +@Data +public class UserPageCommonQueryRequest extends PageQueryRequest { + /** + * user id + */ + @NotNull + private Long userId; + + /** + * searchKey + */ + private String searchKey; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserTeamBatchCreateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserTeamBatchCreateRequest.java new file mode 100644 index 00000000..831bee3a --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserTeamBatchCreateRequest.java @@ -0,0 +1,32 @@ +package ai.chat2db.server.admin.api.controller.user.request; + +import java.util.List; + +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * create + * + * @author Jiaju Zhuang + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class UserTeamBatchCreateRequest { + + /** + * user id + */ + private Long userId; + + /** + * team id list + */ + @NotNull + private List teamIdList; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserUpdateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserUpdateRequest.java new file mode 100644 index 00000000..382826b0 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/request/UserUpdateRequest.java @@ -0,0 +1,52 @@ +package ai.chat2db.server.admin.api.controller.user.request; + +import ai.chat2db.server.domain.api.enums.RoleCodeEnum; +import ai.chat2db.server.domain.api.enums.ValidStatusEnum; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * create + *@author Jiaju Zhuang + */ +@Data +public class UserUpdateRequest { + /** + * 主键 + */ + @NotNull + private Long id; + + /** + * 密码 + */ + private String password; + + /** + * 昵称 + */ + @NotNull + private String nickName; + + /** + * 邮箱 + */ + @NotNull + private String email; + + + /** + * 角色编码 + * + * @see RoleCodeEnum + */ + private String roleCode; + + /** + * 用户状态 + * + * @see ValidStatusEnum + */ + @NotNull + private String status; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/vo/SimpleUserVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/vo/SimpleUserVO.java new file mode 100644 index 00000000..8b8f8807 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/vo/SimpleUserVO.java @@ -0,0 +1,39 @@ + +package ai.chat2db.server.admin.api.controller.user.vo; + +import ai.chat2db.server.domain.api.enums.ValidStatusEnum; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * user + * + * @author Jiaju Zhuang + */ +@Data +public class SimpleUserVO { + /** + * 主键 + */ + @NotNull + private Long id; + + /** + * 用户名 + */ + @NotNull + private String userName; + + /** + * 昵称 + */ + @NotNull + private String nickName; + + /** + * 用户状态 + * + * @see ValidStatusEnum + */ + private String status; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/vo/UserDataSourcePageQueryVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/vo/UserDataSourcePageQueryVO.java new file mode 100644 index 00000000..0281b318 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/vo/UserDataSourcePageQueryVO.java @@ -0,0 +1,31 @@ + +package ai.chat2db.server.admin.api.controller.user.vo; + +import ai.chat2db.server.admin.api.controller.datasource.vo.SimpleDataSourceVO; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Pagination query + * + * @author Jiaju Zhuang + */ +@Data +public class UserDataSourcePageQueryVO { + + /** + * 主键 + */ + @NotNull + private Long id; + + /** + * user id + */ + private Long userId; + + /** + * Data Source + */ + private SimpleDataSourceVO dataSource; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/vo/UserPageQueryVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/vo/UserPageQueryVO.java new file mode 100644 index 00000000..5ff1abaf --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/vo/UserPageQueryVO.java @@ -0,0 +1,73 @@ + +package ai.chat2db.server.admin.api.controller.user.vo; + +import java.util.Date; + +import ai.chat2db.server.common.api.controller.vo.SimpleUserVO; +import ai.chat2db.server.domain.api.enums.RoleCodeEnum; +import ai.chat2db.server.domain.api.enums.ValidStatusEnum; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Pagination query + * + * @author Jiaju Zhuang + */ +@Data +public class UserPageQueryVO { + /** + * 主键 + */ + @NotNull + private Long id; + + /** + * 用户名 + */ + @NotNull + private String userName; + + /** + * 昵称 + */ + @NotNull + private String nickName; + + /** + * 用户状态 + * + * @see ValidStatusEnum + */ + private String status; + + /** + * 邮箱 + */ + @NotNull + private String email; + + /** + * 角色编码 + * + * @see RoleCodeEnum + */ + private String roleCode; + + + /** + * 修改时间 + */ + private Date gmtModified; + + /** + * 修改人用户id + */ + private Long modifiedUserId; + + /** + * 修改人用户 + */ + private SimpleUserVO modifiedUser; + +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/vo/UserTeamPageQueryVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/vo/UserTeamPageQueryVO.java new file mode 100644 index 00000000..56424c24 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src 2/main/java/ai/chat2db/server/admin/api/controller/user/vo/UserTeamPageQueryVO.java @@ -0,0 +1,28 @@ + +package ai.chat2db.server.admin.api.controller.user.vo; + +import ai.chat2db.server.admin.api.controller.team.vo.SimpleTeamVO; +import lombok.Data; + +/** + * Pagination query + * + * @author Jiaju Zhuang + */ +@Data +public class UserTeamPageQueryVO { + /** + * 主键 + */ + private Long id; + + /** + * user id + */ + private Long userId; + + /** + * 团队 + */ + private SimpleTeamVO team; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/CommonCommonController.java b/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/CommonCommonController.java new file mode 100644 index 00000000..327a2aab --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/CommonCommonController.java @@ -0,0 +1,42 @@ + +package ai.chat2db.server.common.api.controller; + +import ai.chat2db.server.common.api.controller.converter.EnvironmentCommonConverter; +import ai.chat2db.server.common.api.controller.vo.SimpleEnvironmentVO; +import ai.chat2db.server.domain.api.param.EnvironmentPageQueryParam; +import ai.chat2db.server.domain.api.service.EnvironmentService; +import ai.chat2db.server.tools.base.wrapper.result.ListResult; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Basic interface + * + * @author Jiaju Zhuang + */ +@RequestMapping("/api/common") +@RestController +public class CommonCommonController { + + @Resource + private EnvironmentService environmentService; + @Resource + private EnvironmentCommonConverter environmentCommonConverter; + + /** + * Query all environments + * + * @return + * @version 2.1.0 + */ + @GetMapping("/environment/list_all") + public ListResult environmentList() { + EnvironmentPageQueryParam environmentPageQueryParam = new EnvironmentPageQueryParam(); + environmentPageQueryParam.setPageSize(Integer.MIN_VALUE); + return ListResult.of( + environmentCommonConverter.dto2vo(environmentService.pageQuery(environmentPageQueryParam).getData())); + } + +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/converter/EnvironmentCommonConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/converter/EnvironmentCommonConverter.java new file mode 100644 index 00000000..74978830 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/converter/EnvironmentCommonConverter.java @@ -0,0 +1,27 @@ +package ai.chat2db.server.common.api.controller.converter; + +import java.util.List; + +import ai.chat2db.server.common.api.controller.vo.SimpleEnvironmentVO; +import ai.chat2db.server.domain.api.model.Environment; +import lombok.extern.slf4j.Slf4j; +import org.mapstruct.Mapper; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Slf4j +@Mapper(componentModel = "spring") +public abstract class EnvironmentCommonConverter { + + + /** + * convert + * + * @param list + * @return + */ + public abstract List dto2vo(List list); +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/request/CommonPageQueryRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/request/CommonPageQueryRequest.java new file mode 100644 index 00000000..87c58b29 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/request/CommonPageQueryRequest.java @@ -0,0 +1,20 @@ + +package ai.chat2db.server.common.api.controller.request; + +import ai.chat2db.server.tools.base.wrapper.request.PageQueryRequest; +import lombok.Data; + +/** + * Common pagination query + * + * @author Jiaju Zhuang + */ +@Data +public class CommonPageQueryRequest extends PageQueryRequest { + + + /** + * searchKey + */ + private String searchKey; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/request/CommonQueryRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/request/CommonQueryRequest.java new file mode 100644 index 00000000..048b6c23 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/request/CommonQueryRequest.java @@ -0,0 +1,18 @@ + +package ai.chat2db.server.common.api.controller.request; + +import lombok.Data; + +/** + * Common query + * + * @author Jiaju Zhuang + */ +@Data +public class CommonQueryRequest { + + /** + * searchKey + */ + private String searchKey; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/vo/SimpleEnvironmentVO.java b/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/vo/SimpleEnvironmentVO.java new file mode 100644 index 00000000..4c9efe9d --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/vo/SimpleEnvironmentVO.java @@ -0,0 +1,48 @@ +package ai.chat2db.server.common.api.controller.vo; + +import java.io.Serial; +import java.io.Serializable; + +import ai.chat2db.server.domain.api.enums.EnvironmentStyleEnum; +import ai.chat2db.server.tools.base.constant.EasyToolsConstant; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * Environment + * + * @author Jiaju Zhuang + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class SimpleEnvironmentVO implements Serializable { + + @Serial + private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID; + + /** + * 主键 + */ + private Long id; + + /** + * 环境名称 + */ + private String name; + + /** + * 环境缩写 + */ + private String shortName; + + /** + * 样式类型 + * + * @see EnvironmentStyleEnum + */ + private String style; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/vo/SimpleUserVO.java b/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/vo/SimpleUserVO.java new file mode 100644 index 00000000..d9c67b84 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-common-api/src 2/main/java/ai/chat2db/server/common/api/controller/vo/SimpleUserVO.java @@ -0,0 +1,41 @@ + +package ai.chat2db.server.common.api.controller.vo; + +import java.io.Serial; +import java.io.Serializable; + +import ai.chat2db.server.tools.base.constant.EasyToolsConstant; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * user + * + * @author Jiaju Zhuang + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class +SimpleUserVO implements Serializable { + @Serial + private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID; + + /** + * 主键 + */ + private Long id; + + /** + * 用户名 + */ + private String userName; + + /** + * 昵称 + */ + private String nickName; +} \ No newline at end of file diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/DataSourceController.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/DataSourceController.java index 4453994c..37c8e4c9 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/DataSourceController.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/DataSourceController.java @@ -63,7 +63,7 @@ import org.springframework.web.bind.annotation.RestController; @Slf4j public class DataSourceController { - private static final DataSourceSelector DATA_SOURCE_SELECTOR= DataSourceSelector.builder() + private static final DataSourceSelector DATA_SOURCE_SELECTOR = DataSourceSelector.builder() .environment(Boolean.TRUE) .build(); @@ -104,7 +104,7 @@ public class DataSourceController { session = SSHManager.getSSHSession(sshWebConverter.toInfo(request)); } catch (Exception e) { log.error("sshConnect error", e); - throw new ConnectionException("connection.ssh.error",null,e); + throw new ConnectionException("connection.ssh.error", null, e); } finally { if (session != null) { session.disconnect(); @@ -184,11 +184,11 @@ public class DataSourceController { */ @GetMapping("/datasource/{id}") public DataResult queryById(@PathVariable("id") Long id) { - DataResult dataResult = dataSourceService.queryById(id); + DataResult dataResult = dataSourceService.queryExistent(id, DATA_SOURCE_SELECTOR); DataSourceVO dataSourceVO = dataSourceWebConverter.dto2vo(dataResult.getData()); - if(StringUtils.isNotBlank(dataSourceVO.getUser())){ + if (StringUtils.isNotBlank(dataSourceVO.getUser())) { dataSourceVO.setAuthenticationType("1"); - }else { + } else { dataSourceVO.setAuthenticationType("2"); } return DataResult.of(dataSourceVO); @@ -212,7 +212,7 @@ public class DataSourceController { * @param request * @return */ - @RequestMapping(value = "/datasource/update",method = {RequestMethod.POST, RequestMethod.PUT}) + @RequestMapping(value = "/datasource/update", method = {RequestMethod.POST, RequestMethod.PUT}) public DataResult update(@RequestBody DataSourceUpdateRequest request) { DataSourceUpdateParam param = dataSourceWebConverter.updateReq2param(request); return dataSourceService.updateWithPermission(param); diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/vo/DataSourceVO.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/vo/DataSourceVO.java index e7082201..e3ae0180 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/vo/DataSourceVO.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/vo/DataSourceVO.java @@ -101,6 +101,11 @@ public class DataSourceVO { */ private DriverConfig driverConfig; + /** + * 环境id + */ + private Long environmentId; + /** * 环境 */