forked from gzzfw/frontEnd/gzDyh

liuwh
2024-09-13 6613c11627b5e0be1629f3784acf0245a8040ea1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/*
 * @Company: hugeInfo
 * @Author: ldh
 * @Date: 2022-02-16 11:28:12
 * @LastEditTime: 2022-03-15 09:50:39
 * @LastEditors: lwh
 * @Version: 1.0.0
 * @Description: axios处理方法
 */
import axios from 'axios';
import CryptoJS from 'crypto-js';
import appUrl from './appUrl';
import * as $$ from '../utils/utility';
 
// aes加密,接口请求数据加密,数据返回解密
const aes_key = 'tVTShp12fFVkNBxV';
 
const aes_iv = 'PKCS5Padding';
 
// 加密
function aes_encrypt(text) {
    let value = text ? text : '';
    return CryptoJS.AES.encrypt(value, CryptoJS.enc.Utf8.parse(aes_key), {
        iv: CryptoJS.enc.Utf8.parse(aes_iv),
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7,
    }).toString();
}
 
// 解密
function aes_decrypt(text) {
    let value = text ? text : '';
    let decrypted = CryptoJS.AES.decrypt(value, CryptoJS.enc.Utf8.parse(aes_key), {
        iv: CryptoJS.enc.Utf8.parse(aes_iv),
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7,
    });
    return JSON.parse(decrypted.toString(CryptoJS.enc.Utf8) || 'null');
}
 
// 网络异常
function networkException(err) {
    if (err.code !== 200) {
        $$.catchApiError({ content: '抱歉!网络异常请刷新' });
    }
}
 
// api返回结果处理
function resHandle(resData) {
    const { code, data, msg } = resData;
    if (code == '0') {
        // let res_data = data ? aes_decrypt(data) : true;
        return { type: true, data };
    } else if (code == '401' || code == '10002') {
        $$.catchApiError({ content: '抱歉! 登录状态已失效请重新登录', loginStatus: 'lose' });
        return { type: false };
    } else {
        $$.catchApiError({ content: msg });
        return { type: false };
    }
}
 
export const ax = axios;
 
export function request(value = {}) {
    let local = localStorage.getItem('operationToken');
 
    let token = !local ? null : JSON.parse(local);
 
    // 无token时
    // if (!token) {
    //     $$.catchApiError({ content: '抱歉!登录状态已失效请重新登录', loginStatus: 'lose' });
    //     return false;
    // }
 
    // let data = aes_encrypt(JSON.stringify(value.data));
    let data = value.data;
 
    const url = `${appUrl[value.service] || ''}/api/${value.url}`;
 
    axios.defaults.baseURL = $$.isDebug ? appUrl.debug : appUrl.web;
 
    // axios.defaults.headers.common['Authorization'] = token;
 
    if (value.type === 'get') {
        return ax
            .get(url, { params: value.data })
            .then((response) => {
                return resHandle(response.data);
            })
            .catch((err) => {
                networkException(err);
                return false;
            });
    } else {
        return ax
            .post(url, data)
            .then((response) => {
                return resHandle(response.data);
            })
            .catch((err) => {
                networkException(err);
                return false;
            });
    }
}