mirror of
https://github.com/jeecgboot/JeecgBoot.git
synced 2025-12-26 08:16:41 +08:00
前端和后端源码,合并到一个git仓库中,方便用户下载,避免前后端不匹配的问题
This commit is contained in:
43
jeecgboot-vue3/src/api/sys/menu.ts
Normal file
43
jeecgboot-vue3/src/api/sys/menu.ts
Normal file
@ -0,0 +1,43 @@
|
||||
import { defHttp } from '/@/utils/http/axios';
|
||||
import { getMenuListResultModel } from './model/menuModel';
|
||||
|
||||
enum Api {
|
||||
GetMenuList = '/sys/permission/getUserPermissionByToken',
|
||||
// 【QQYUN-8487】
|
||||
// SwitchVue3Menu = '/sys/switchVue3Menu',
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: Get user menu based on id
|
||||
*/
|
||||
|
||||
export const getMenuList = () => {
|
||||
return new Promise((resolve) => {
|
||||
//为了兼容mock和接口数据
|
||||
defHttp.get<getMenuListResultModel>({ url: Api.GetMenuList }).then((res) => {
|
||||
if (Array.isArray(res)) {
|
||||
resolve(res);
|
||||
} else {
|
||||
resolve(res['menu']);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @description: 获取后台菜单权限和按钮权限
|
||||
*/
|
||||
export function getBackMenuAndPerms() {
|
||||
return defHttp.get({ url: Api.GetMenuList });
|
||||
}
|
||||
|
||||
/**
|
||||
* 切换成vue3菜单
|
||||
*/
|
||||
// update-begin--author:liaozhiyang---date:20240313---for:【QQYUN-8487】注释掉判断菜单是否vue2版本逻辑代码
|
||||
// export const switchVue3Menu = () => {
|
||||
// return new Promise((resolve) => {
|
||||
// defHttp.get({ url: Api.SwitchVue3Menu });
|
||||
// });
|
||||
// };
|
||||
// update-end--author:liaozhiyang---date:20240313---for:【QQYUN-8487】注释掉判断菜单是否vue2版本逻辑代码
|
||||
16
jeecgboot-vue3/src/api/sys/model/menuModel.ts
Normal file
16
jeecgboot-vue3/src/api/sys/model/menuModel.ts
Normal file
@ -0,0 +1,16 @@
|
||||
import type { RouteMeta } from 'vue-router';
|
||||
export interface RouteItem {
|
||||
path: string;
|
||||
component: any;
|
||||
meta: RouteMeta;
|
||||
name?: string;
|
||||
alias?: string | string[];
|
||||
redirect?: string;
|
||||
caseSensitive?: boolean;
|
||||
children?: RouteItem[];
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: Get menu return value
|
||||
*/
|
||||
export type getMenuListResultModel = RouteItem[];
|
||||
5
jeecgboot-vue3/src/api/sys/model/uploadModel.ts
Normal file
5
jeecgboot-vue3/src/api/sys/model/uploadModel.ts
Normal file
@ -0,0 +1,5 @@
|
||||
export interface UploadApiResult {
|
||||
message: string;
|
||||
code: number;
|
||||
url: string;
|
||||
}
|
||||
58
jeecgboot-vue3/src/api/sys/model/userModel.ts
Normal file
58
jeecgboot-vue3/src/api/sys/model/userModel.ts
Normal file
@ -0,0 +1,58 @@
|
||||
/**
|
||||
* @description: Login interface parameters
|
||||
*/
|
||||
export interface LoginParams {
|
||||
username: string;
|
||||
password: string;
|
||||
}
|
||||
|
||||
export interface ThirdLoginParams {
|
||||
token: string;
|
||||
thirdType: string;
|
||||
}
|
||||
|
||||
export interface RoleInfo {
|
||||
roleName: string;
|
||||
value: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: Login interface return value
|
||||
*/
|
||||
export interface LoginResultModel {
|
||||
userId: string | number;
|
||||
token: string;
|
||||
role: RoleInfo;
|
||||
userInfo?: any
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: Get user information return value
|
||||
*/
|
||||
export interface GetUserInfoModel {
|
||||
roles: RoleInfo[];
|
||||
// 用户id
|
||||
userId: string | number;
|
||||
// 用户名
|
||||
username: string;
|
||||
// 真实名字
|
||||
realname: string;
|
||||
// 头像
|
||||
avatar: string;
|
||||
// 介绍
|
||||
desc?: string;
|
||||
// 用户信息
|
||||
userInfo?: any;
|
||||
// 缓存字典项
|
||||
sysAllDictItems?: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: Get user information return value
|
||||
*/
|
||||
export interface GetResultModel {
|
||||
code: number;
|
||||
message: string;
|
||||
result: object;
|
||||
success: Boolean;
|
||||
}
|
||||
32
jeecgboot-vue3/src/api/sys/upload.ts
Normal file
32
jeecgboot-vue3/src/api/sys/upload.ts
Normal file
@ -0,0 +1,32 @@
|
||||
import { UploadApiResult } from './model/uploadModel';
|
||||
import { defHttp } from '/@/utils/http/axios';
|
||||
import { UploadFileParams } from '/#/axios';
|
||||
import { useGlobSetting } from '/@/hooks/setting';
|
||||
|
||||
const { uploadUrl = '' } = useGlobSetting();
|
||||
|
||||
/**
|
||||
* @description: Upload interface
|
||||
*/
|
||||
export function uploadApi(params: UploadFileParams, onUploadProgress: (progressEvent: ProgressEvent) => void) {
|
||||
return defHttp.uploadFile<UploadApiResult>(
|
||||
{
|
||||
url: uploadUrl,
|
||||
onUploadProgress,
|
||||
},
|
||||
params
|
||||
);
|
||||
}
|
||||
/**
|
||||
* @description: Upload interface
|
||||
*/
|
||||
export function uploadImg(params: UploadFileParams, onUploadProgress: (progressEvent: ProgressEvent) => void) {
|
||||
return defHttp.uploadFile<UploadApiResult>(
|
||||
{
|
||||
url: `${uploadUrl}/sys/common/upload`,
|
||||
onUploadProgress,
|
||||
},
|
||||
params,
|
||||
{ isReturnResponse: true }
|
||||
);
|
||||
}
|
||||
222
jeecgboot-vue3/src/api/sys/user.ts
Normal file
222
jeecgboot-vue3/src/api/sys/user.ts
Normal file
@ -0,0 +1,222 @@
|
||||
import { defHttp } from '/@/utils/http/axios';
|
||||
import { LoginParams, LoginResultModel, GetUserInfoModel } from './model/userModel';
|
||||
|
||||
import { ErrorMessageMode } from '/#/axios';
|
||||
import { useMessage } from '/@/hooks/web/useMessage';
|
||||
import { useUserStoreWithOut } from '/@/store/modules/user';
|
||||
import { setAuthCache } from '/@/utils/auth';
|
||||
import { TOKEN_KEY } from '/@/enums/cacheEnum';
|
||||
import { router } from '/@/router';
|
||||
import { PageEnum } from '/@/enums/pageEnum';
|
||||
import { ExceptionEnum } from "@/enums/exceptionEnum";
|
||||
|
||||
const { createErrorModal } = useMessage();
|
||||
enum Api {
|
||||
Login = '/sys/login',
|
||||
phoneLogin = '/sys/phoneLogin',
|
||||
Logout = '/sys/logout',
|
||||
GetUserInfo = '/sys/user/getUserInfo',
|
||||
// 获取系统权限
|
||||
// 1、查询用户拥有的按钮/表单访问权限
|
||||
// 2、所有权限
|
||||
// 3、系统安全模式
|
||||
GetPermCode = '/sys/permission/getPermCode',
|
||||
//新加的获取图形验证码的接口
|
||||
getInputCode = '/sys/randomImage',
|
||||
//获取短信验证码的接口
|
||||
getCaptcha = '/sys/sms',
|
||||
//注册接口
|
||||
registerApi = '/sys/user/register',
|
||||
//校验用户接口
|
||||
checkOnlyUser = '/sys/user/checkOnlyUser',
|
||||
//SSO登录校验
|
||||
validateCasLogin = '/sys/cas/client/validateLogin',
|
||||
//校验手机号
|
||||
phoneVerify = '/sys/user/phoneVerification',
|
||||
//修改密码
|
||||
passwordChange = '/sys/user/passwordChange',
|
||||
//第三方登录
|
||||
thirdLogin = '/sys/thirdLogin/getLoginUser',
|
||||
//第三方登录
|
||||
getThirdCaptcha = '/sys/thirdSms',
|
||||
//获取二维码信息
|
||||
getLoginQrcode = '/sys/getLoginQrcode',
|
||||
//监控二维码扫描状态
|
||||
getQrcodeToken = '/sys/getQrcodeToken',
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: user login api
|
||||
*/
|
||||
export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal') {
|
||||
return defHttp.post<LoginResultModel>(
|
||||
{
|
||||
url: Api.Login,
|
||||
params,
|
||||
},
|
||||
{
|
||||
errorMessageMode: mode,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: user phoneLogin api
|
||||
*/
|
||||
export function phoneLoginApi(params: LoginParams, mode: ErrorMessageMode = 'modal') {
|
||||
return defHttp.post<LoginResultModel>(
|
||||
{
|
||||
url: Api.phoneLogin,
|
||||
params,
|
||||
},
|
||||
{
|
||||
errorMessageMode: mode,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: getUserInfo
|
||||
*/
|
||||
export function getUserInfo() {
|
||||
return defHttp.get<GetUserInfoModel>({ url: Api.GetUserInfo }, {}).catch((e) => {
|
||||
// update-begin--author:zyf---date:20220425---for:【VUEN-76】捕获接口超时异常,跳转到登录界面
|
||||
if (e && (e.message.includes('timeout') || e.message.includes('401'))) {
|
||||
//接口不通时跳转到登录界面
|
||||
const userStore = useUserStoreWithOut();
|
||||
userStore.setToken('');
|
||||
setAuthCache(TOKEN_KEY, null);
|
||||
|
||||
// update-begin-author:sunjianlei date:20230306 for: 修复登录成功后,没有正确重定向的问题
|
||||
router.push({
|
||||
path: PageEnum.BASE_LOGIN,
|
||||
query: {
|
||||
// 传入当前的路由,登录成功后跳转到当前路由
|
||||
redirect: router.currentRoute.value.fullPath,
|
||||
}
|
||||
});
|
||||
// update-end-author:sunjianlei date:20230306 for: 修复登录成功后,没有正确重定向的问题
|
||||
|
||||
}
|
||||
// update-end--author:zyf---date:20220425---for:【VUEN-76】捕获接口超时异常,跳转到登录界面
|
||||
});
|
||||
}
|
||||
|
||||
export function getPermCode() {
|
||||
return defHttp.get({ url: Api.GetPermCode });
|
||||
}
|
||||
|
||||
export function doLogout() {
|
||||
return defHttp.get({ url: Api.Logout });
|
||||
}
|
||||
|
||||
export function getCodeInfo(currdatetime) {
|
||||
let url = Api.getInputCode + `/${currdatetime}`;
|
||||
return defHttp.get({ url: url });
|
||||
}
|
||||
/**
|
||||
* @description: 获取短信验证码
|
||||
*/
|
||||
export function getCaptcha(params) {
|
||||
return new Promise((resolve, reject) => {
|
||||
defHttp.post({ url: Api.getCaptcha, params }, { isTransformResponse: false }).then((res) => {
|
||||
console.log(res);
|
||||
if (res.success) {
|
||||
resolve(true);
|
||||
} else {
|
||||
//update-begin---author:wangshuai---date:2024-04-18---for:【QQYUN-9005】同一个IP,1分钟超过5次短信,则提示需要验证码---
|
||||
if(res.code != ExceptionEnum.PHONE_SMS_FAIL_CODE){
|
||||
createErrorModal({ title: '错误提示', content: res.message || '未知问题' });
|
||||
reject();
|
||||
}
|
||||
reject(res);
|
||||
//update-end---author:wangshuai---date:2024-04-18---for:【QQYUN-9005】同一个IP,1分钟超过5次短信,则提示需要验证码---
|
||||
}
|
||||
}).catch((res)=>{
|
||||
createErrorModal({ title: '错误提示', content: res.message || '未知问题' });
|
||||
reject();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 注册接口
|
||||
*/
|
||||
export function register(params) {
|
||||
return defHttp.post({ url: Api.registerApi, params }, { isReturnNativeResponse: true });
|
||||
}
|
||||
|
||||
/**
|
||||
*校验用户是否存在
|
||||
* @param params
|
||||
*/
|
||||
export const checkOnlyUser = (params) => defHttp.get({ url: Api.checkOnlyUser, params }, { isTransformResponse: false });
|
||||
/**
|
||||
*校验手机号码
|
||||
* @param params
|
||||
*/
|
||||
export const phoneVerify = (params) => defHttp.post({ url: Api.phoneVerify, params }, { isTransformResponse: false });
|
||||
/**
|
||||
*密码修改
|
||||
* @param params
|
||||
*/
|
||||
export const passwordChange = (params) => defHttp.get({ url: Api.passwordChange, params }, { isTransformResponse: false });
|
||||
/**
|
||||
* @description: 第三方登录
|
||||
*/
|
||||
export function thirdLogin(params, mode: ErrorMessageMode = 'modal') {
|
||||
//==========begin 第三方登录/auth2登录需要传递租户id===========
|
||||
let tenantId = "0";
|
||||
if(!params.tenantId){
|
||||
tenantId = params.tenantId;
|
||||
}
|
||||
//==========end 第三方登录/auth2登录需要传递租户id===========
|
||||
return defHttp.get<LoginResultModel>(
|
||||
{
|
||||
url: `${Api.thirdLogin}/${params.token}/${params.thirdType}/${tenantId}`,
|
||||
},
|
||||
{
|
||||
errorMessageMode: mode,
|
||||
}
|
||||
);
|
||||
}
|
||||
/**
|
||||
* @description: 获取第三方短信验证码
|
||||
*/
|
||||
export function setThirdCaptcha(params) {
|
||||
return new Promise((resolve, reject) => {
|
||||
defHttp.post({ url: Api.getThirdCaptcha, params }, { isTransformResponse: false }).then((res) => {
|
||||
console.log(res);
|
||||
if (res.success) {
|
||||
resolve(true);
|
||||
} else {
|
||||
createErrorModal({ title: '错误提示', content: res.message || '未知问题' });
|
||||
reject();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取登录二维码信息
|
||||
*/
|
||||
export function getLoginQrcode() {
|
||||
let url = Api.getLoginQrcode;
|
||||
return defHttp.get({ url: url });
|
||||
}
|
||||
|
||||
/**
|
||||
* 监控扫码状态
|
||||
*/
|
||||
export function getQrcodeToken(params) {
|
||||
let url = Api.getQrcodeToken;
|
||||
return defHttp.get({ url: url, params });
|
||||
}
|
||||
|
||||
/**
|
||||
* SSO登录校验
|
||||
*/
|
||||
export async function validateCasLogin(params) {
|
||||
let url = Api.validateCasLogin;
|
||||
return defHttp.get({ url: url, params });
|
||||
}
|
||||
Reference in New Issue
Block a user