jazz
2023-12-08 bf4dca5344dee1a84b75d9993f4dfc59de3f3ee9
提交 | 用户 | age
6da3c1 1 /*
J 2  * @Author: xio
3  * @Date: 2023-12-06 12:06:00
4  * @Last Modified by: xio
5  * @Last Modified time: 2023-12-06 12:06:00
6  */
7 // 通用function,通过全局安装,或import引用调用
8 import config from '../config' // 域名配置
9 import md5 from 'js-md5'
10 // 基础配置 - 获取当前环境
11 var ismock = config.ismock
12 var isTestView = config.isTestView
13 var fn_obj = {}// fn.js对象
14 var APPID, SECRET
15 if (isTestView) {
16   APPID = 'phi123'
17   SECRET = 'test123'
18 } else {
19   APPID = 'phiwyrnujZPOBRaGs'
20   SECRET = 'TmUlZWaBLQdbdpiDwMKUAjHwKdnkXMyQ'
21 }
22 /**
23  * 生成唯一id
24  */
25 function uuid() {
26   var s = []
27   var hexDigits = '0123456789abcdef'
28   for (var i = 0; i < 36; i++) {
29     s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1)
30   }
31   s[14] = '4'
32   s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1)
33
34   s[8] = s[13] = s[18] = s[23] = '-'
35   var uuid = s.join('')
36   return uuid
37 }
38
39 /**
40  * 请求参数md5加密处理
41  * @param {Object} option 请求对象
42  */
43 function httpOptionMd5Handle(option) {
cf3e3e 44   // 当前时间戳
6da3c1 45   var timestamp = new Date().getTime()
J 46   var sign, params
cf3e3e 47   // data参数字段排序(26字母A到Z排序)
J 48   var newData = {}
49   Object.keys(option.data).sort().map(key => {
50     newData[key] = option.data[key]
51   })
6da3c1 52   // 参数处理
cf3e3e 53   params = JSON.stringify(newData)
6da3c1 54   // if (params === '{}') {
J 55   //   params = ''
56   // }
57   // 非mock模式
cf3e3e 58   if (option) {
6da3c1 59     option.header[`appId`] = APPID
J 60     option.header[`timestamp`] = timestamp
61     // 签名大写
62     sign = md5(`${APPID}${timestamp}${params}${SECRET}`).toUpperCase()
63     option.header[`sign`] = sign
64   }
65   console.log('==============================>', option, params, sign)
66   return option
67 }
68
69 var fn = {
70   uuid,
71   httpOptionMd5Handle,
72   /**
73      * 深拷贝
74      * @param {object} obj 被复制的对象
75      * @return {object} 复制完成的对象
76      */
77   deepCopyFN(obj) {
78     if (typeof obj !== 'object') {
79       return obj
80     }
81
82     let cloneObj = {}
83     switch (obj.constructor) {
84       case Array:
85         cloneObj = []
86       // eslint-disable-next-line no-fallthrough
87       case Object:
88         for (var property in obj) {
89           cloneObj[property] = typeof obj[property] === 'object' ? this.deepCopyFN(obj[property]) : obj[property]
90         }
91         break
92       case Map:
93         cloneObj = new Map()
94         obj.forEach((value, key) => {
95           cloneObj.set(key, typeof value === 'object' ? this.deepCopyFN(value) : value)
96         })
97         break
98       case Set:
99         cloneObj = new Set()
100         obj.forEach(value => {
101           cloneObj.add(typeof value === 'object' ? this.deepCopyFN(value) : value)
102         })
103         break
104     }
105     return cloneObj
106   }
107 }
108 export default fn