import { message } from 'antd'; import { useAuthData, useAuthAction, useAuthResult } from '../index'; interface IcheckResProps { status: boolean; msg: string; } export const useAuthModules = () => { const { dataCheckUsername, dataCheckPhone, dataLoginCheckPasswd, dataCheckAliAwsc, dataCheckVerifyCode, dataInitParams } = useAuthData(); const { actionLogin } = useAuthAction(); const { needReset, resultSuccess, resultFailed, pageLocation } = useAuthResult(); const authLogin = (val: object) => { // loginType NORMAL 普通登录:手机号码+密码 NAME_TEL: 账号/手机号码+密码 VERIFYCODE: 短信验证码 const value = { platformCode: 'YW_YUN', signType: 'SLIDER', loginType: 'NORMAL', // JUMP 跳转 REQ 返回 jumpSource: 'JUMP', ...val, }; // 验证参数 const checkResult: IcheckResProps = checkLoginData(value); let actionResult: any = null; if (checkResult.status) { // 预处理参数 const params = dataInitParams(value); // 请求接口 actionResult = executeAction(params); if (value.jumpSource === 'REQ') { return actionResult.then((res: any) => { return processingResult(res, value); }).catch((res: any) => { return processingResult(res, value); }) } else { actionResult.then((res: any) => { return processingResult(res, value); }).catch((res: any) => { return processingResult(res, value); }) } } else { message.warning(checkResult.msg || '校验参数未通过,请检查'); return checkResult; } }; // 校验登陆参数 const checkLoginData = (val: any) => { // 待检测keys const checkArray = Object.keys(val); // 必检参数集合 let CHECK_T_PARAMS = ['account', 'userPasswd']; if (val?.loginType === 'VERIFYCODE') { CHECK_T_PARAMS = ['userPhone', 'verifyCode']; } // 检测错误结果数据集合 const RES_INFOS: any[] = []; // 检测必检参数是否缺失 CHECK_T_PARAMS.forEach((item: string) => { const flag: boolean = checkArray.includes(item); if (!flag) { RES_INFOS.push({ status: false, msg: `${item}参数缺失,请检查`, }); } }); if (RES_INFOS.length) { return RES_INFOS[0]; } // 检测参数格式 checkArray.forEach((item?: string) => { switch (item) { case 'account': { let res: IcheckResProps = { status: true, msg: '' } if ((val as any).loginType === 'NAME_TEL') { // 手机号码/账号登录 res = dataCheckUsername((val as any)[item]); return res } res = dataCheckPhone((val as any)[item]); if (!res.status) { RES_INFOS.push(res); } return res; } case 'userPasswd': { const res: IcheckResProps = dataLoginCheckPasswd((val as any)[item]); if (!res.status) { RES_INFOS.push(res); } return res; } case 'signType': { if ((val as any).signType === 'NULL') { return { status: true, msg: '无校验规则检测', }; } const res: IcheckResProps = dataCheckAliAwsc((val as any).sliderParam); if (!res.status) { RES_INFOS.push(res); } return res; } case 'userPhone': { let res: IcheckResProps = dataCheckPhone((val as any)[item]); if (!res.status) { RES_INFOS.push(res); } return res; } case 'verifyCode': { let res: IcheckResProps = dataCheckVerifyCode((val as any)[item]); if (!res.status) { RES_INFOS.push(res); } return res; } default: { return { status: true, msg: '无校验规则检测', }; } } }); if (RES_INFOS.length) { return RES_INFOS[0]; } return { status: true, msg: '校验通过', }; }; const executeAction = (val: object) => { return actionLogin(val); }; const processingResult = (val: any, value: any) => { if (value.jumpSource === 'REQ') { if (Object.keys(val).length) { return { status: true, loginInfos: val, msg: '登录成功', } } else { return resultFailed('NORMAL') } } else if (Object.keys(val).length) { const bReset = needReset(val); bReset && resultSuccess(val, pageLocation); } else { return resultFailed('NORMAL') } }; return { authLogin, }; };