import axios from 'axios'; import Auth from '../model/User'; import _isEmpty from 'lodash/isEmpty'; import _trim from 'lodash/trim'; import querystring from 'querystring'; import tplusApi from './TplusApi'; import UIConfirm from '../components/UIConfirm'; import {clientId,clientSecret,cspAS,tplusWebAppApiHost,ciaHost,cspAk,prodProxyHost,proxyServer} from '../const/app'; import User from '../model/User'; import {env} from 'mutants-microfx'; const {constant,platform} = env; const QS = require('qs'); export default class LoginApi{ //用户登录验证 获取企业列表信息 static async authentication({username,password}){ let ajax = axios.create({ baseURL: ciaHost }); const param = { 'auth_username': username, 'password': password, 'needOrgLists': '1', 'client_id': clientId, 'client_secret': clientSecret, }; const response = await ajax.post('/internal_api/client_authentication_with_userInfo', querystring.stringify(param)); var result = response.data; var errorInfo = ''; if (result.auth_result == 'true') { return result; }else{ return undefined; } } //用户修改密码操作 static async updatePwd(oldPassword:string,newPassword:string){ const user = User.restore(); const access_token = user.accessToken; const appKey = atob(cspAk); const passwordLevel = 1; let ajax = axios.create({ baseURL: ciaHost }); const passwordInfo = JSON.stringify({ oldPassword, newPassword, passwordLevel }); const param = { appKey, access_token, passwordInfo }; const response = await ajax.post('/api/v1/user/password', querystring.stringify(param)); return response.data; } static async authenticationByCode(code:string){ let ajax = axios.create({ baseURL: ciaHost }); let param,response; if(platform === constant.platform.chanjet){ param = QS.stringify({ client_id: clientId, client_secret:clientSecret, auth_code: code }); response = await ajax.post('/internal_api/codeForAccessTokenForClient', param); }else if(platform === constant.platform.yonyou){ param = QS.stringify({ client_id: clientId, client_secret:clientSecret, // appKey: atob(cspAk), // appSecret: atob(cspAS), code }); response = await ajax.post('/special_api/v1/user/getTokenByYonyouCode', param); } const d = response.data; if(d.hasOwnProperty('error') && d.hasOwnProperty('error_description') && !_isEmpty(_trim(d.error_description))){ return Promise.reject(d.error_description); }else{ if(_isEmpty(_trim(d.user_id)) || _isEmpty(_trim(d.access_token))){ return Promise.reject('获取用户信息错误'); }else{ return Promise.resolve(d); } } } //获取云端的服务器地址 static async getTargetURL(){ var ajax = axios.create({ baseURL: tplusWebAppApiHost }); const resp = await ajax.post('/serverUrl'); return resp.data; } //获取云端的服务器地址 static async getTargetURLByOrgID(targetOrgID:string){ var ajax = axios.create({ baseURL: tplusWebAppApiHost }); const resp = await ajax.post('/serverUrl',{targetOrgID}); return resp.data; } //获取T+的token static async checkTplusToken(orgId:string,serverUrl:any):Promise{ let checkThroughProxy = false; if(serverUrl.indexOf(proxyServer) > -1){ checkThroughProxy = true; } const method = 'chanjet.EAP.GZQ.CSP.GetTPlusToken'; let auth = Auth.restore(); let clientName = window.localStorage.clientName || ''; let desc = window.localStorage.desc || '' //供循环调用时使用 if(!!clientName) window.localStorage.clientName = clientName; if(!!desc) window.localStorage.desc = desc; const param = { orgId: orgId, cspUserId: auth.userId, cspAppKey: atob(cspAk), cspAppSecret: '', lastLoginedToken: '', clientName, desc, NoLogout:true }; let requestObj = {}; requestObj = QS.stringify({ 'Apis': JSON.stringify({ 'Args': param, 'Method': method }) }); const user = User.restore(); var ajax = axios.create({baseURL: serverUrl}); let url = 'api/rest'; url = url + '?IsFree=1&methodName='+method+'&userId='+user.userId +'&orgId='+orgId; let user_req_id =`${user.userId}x${new Date().getTime().toString(16)}`; url += '&user_req_id=' + user_req_id; const resp = await ajax.post(url, requestObj,{headers:{checkThroughProxy,checkOrgId:orgId}}) .then(resp=>{ return Promise.resolve(resp); }).catch(err => { UIConfirm.show("未找到云企业(orgid:90015044950)对应的账套,请重新选择企业登录",()=>{ }); return Promise.reject(err); }); return resp.data; } static async changeOrg(orgId){ var ajax = axios.create({ baseURL: tplusWebAppApiHost }); const auth = Auth.restore(); const user = User.restore(); const resp = await ajax.post('gettplusauthinfo',QS.stringify({orgId,ciaUserId:auth.userId,ciaToken:user.accessToken,targetOrgID:orgId}), { headers: {'Content-Type':'application/x-www-form-urlencoded'}} ); return resp.data; } //获取云端的配置信息 static async getApiConfig(){ return axios.get(`${prodProxyHost}?url=https://newretail-static-pro-bj.oss-cn-beijing.aliyuncs.com/fe_gateway/api_config.json`); } //获取T+的token static async getTplusToken({clientName = window.localStorage.clientName || '',desc = window.localStorage.desc || ''}):Promise{ const method = 'chanjet.EAP.GZQ.CSP.GetTPlusToken'; let auth = Auth.restore(); //供循环调用时使用 if(!!clientName) window.localStorage.clientName = clientName; if(!!desc) window.localStorage.desc = desc; const param = { orgId: auth.orgId, cspUserId: auth.userId, cspAppKey: atob(cspAk), cspAppSecret: '', lastLoginedToken: '', clientName, desc }; const resp:string = (await tplusApi(param,method,false,true)) as string; return resp; } //获取jsTicket信息 static async getSignature(){ const user = User.restore(); const access_token = user.accessToken; const param = { appKey:atob(cspAk), access_token:access_token }; const query = QS.stringify(param); const url = `/api/v1/thirdplatform/getSignature?${query}`; const ajax = axios.create({ baseURL: ciaHost }); return new Promise((res,rej)=>{ ajax.get(url).then(resp=>{ const d = resp.data; return res(d); }).catch(err=>{ return rej(err); }); }); } //注销T+ static async logout(){ const method = 'chanjet.Authorization.Logout'; const param = {}; const resp = await tplusApi(param,method,false,false); return resp; } }