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( { url: Api.Login, params, }, { errorMessageMode: mode, } ); } /** * @description: user phoneLogin api */ export function phoneLoginApi(params: LoginParams, mode: ErrorMessageMode = 'modal') { return defHttp.post( { url: Api.phoneLogin, params, }, { errorMessageMode: mode, } ); } /** * @description: getUserInfo */ export function getUserInfo() { return defHttp.get({ 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( { 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 }); }