From 1e9eeb19623ab3f7ecd85e0c3467c2a62d08d678 Mon Sep 17 00:00:00 2001 From: mo-bai <1873032855@qq.com> Date: Mon, 14 Mar 2022 10:57:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=BC=80=E7=A5=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apis/cartApi.js | 18 +-- apis/commonApi.js | 55 +++++--- apis/enquiryListApi.js | 7 +- apis/orderApi.js | 27 +++- apis/paperDetailsApi.js | 13 +- apis/testApi.js | 40 ------ enums/index.js | 17 +++ pages.json | 8 -- pages/mine/index.vue | 2 +- pages/order-make/index.vue | 63 +++++++++- pages/paper-details/index.vue | 2 +- pages/test/index.vue | 53 -------- store/index.js | 22 ++-- utils/http/index.js | 16 ++- utils/md5.js | 229 ++++++++++++++++++++++++++++++++++ 15 files changed, 420 insertions(+), 152 deletions(-) delete mode 100644 apis/testApi.js delete mode 100644 pages/test/index.vue create mode 100644 utils/md5.js diff --git a/apis/cartApi.js b/apis/cartApi.js index 739a9f2..c36ae6d 100644 --- a/apis/cartApi.js +++ b/apis/cartApi.js @@ -1,4 +1,3 @@ - import http from '../utils/http/index.js' // 获取购物车列表 export function getShoppingCarList(data) { @@ -14,19 +13,20 @@ export function getShoppingCarList(data) { } // 移除购物车 export function removeShoppingCar(data) { - return http.post( - { - url: '/base-paper-trading/delete/shopping-car', - data - } - ) + return http.post({ + url: '/base-paper-trading/delete/shopping-car', + data + }) } -// 购物车结算 +// 购物车结算 export function closePaperReserve(data) { return http.post( { url: '/base-paper-trading/shopping/trolley/buyer/paper/reserve', data + }, + { + isEncrypt: true } ) -} \ No newline at end of file +} diff --git a/apis/commonApi.js b/apis/commonApi.js index 0178559..d32699a 100644 --- a/apis/commonApi.js +++ b/apis/commonApi.js @@ -37,6 +37,12 @@ function syncStore(res) { isVip = true } } + store.commit('setUserInfo', { + name: companyInfo.employeeName, + userId: res.userId, + mobile: res.mobile, + avatar: null + }) store.commit('setCompanyInfo', { id: companyInfo.id, name: companyInfo.name, @@ -44,12 +50,6 @@ function syncStore(res) { isVip: isVip, vipExpireTime: vipExpireTime }) - store.commit('setUserInfo', { - name: companyInfo.employeeName, - userId: res.userId, - mobile: res.mobile, - avatar: null - }) } else { if (res) { store.commit('setUserInfo', { @@ -74,15 +74,17 @@ export function getBaseInfo(data = {}, refresh = false) { if (!refresh && baseInfo) { resolve(baseInfo) } else { - http.get({ url: '/yyt-uec/get/base-info', data }, { hideLoading: true }).then((res) => { - if (res) { - baseInfo = res - syncStore(res) - resolve(res) - } else { - resolve(null) - } - }) + http + .get({ url: '/yyt-uec/get/base-info', data }, { hideLoading: true }) + .then((res) => { + if (res) { + baseInfo = res + syncStore(res) + resolve(res) + } else { + resolve(null) + } + }) } }) } @@ -93,7 +95,9 @@ export function getBaseInfo(data = {}, refresh = false) { */ export function getVerifyUrl(data = {}) { return http.post({ - url: '/yyt-uec/get/fdd-enterprise-verify-url?enterpriseId=' + data.enterpriseId, + url: + '/yyt-uec/get/fdd-enterprise-verify-url?enterpriseId=' + + data.enterpriseId, data }) } @@ -104,7 +108,9 @@ export function getVerifyUrl(data = {}) { */ export function getGuaranteeContract(data = {}) { return http.post({ - url: '/yyt-uec/create/supplier/guarantee-contract?mallSupplierId=' + data.mallSupplierId, + url: + '/yyt-uec/create/supplier/guarantee-contract?mallSupplierId=' + + data.mallSupplierId, data }) } @@ -218,3 +224,18 @@ export function getOpenId(data = {}) { data: data }) } + +/** + * 绑定纸盘商销售id + * @param {object} data + * @value {string} customerEnterpriseId 客户企业id + * @value {string} customerId 客户id + * @value {string} sellerId 纸盘商销售id + * @value {string} sellerSupplierId 纸盘商id + */ +export function bindUser(data = {}) { + return http.post({ + url: '/yyt-uec/seller/bound/customer', + data: data + }) +} diff --git a/apis/enquiryListApi.js b/apis/enquiryListApi.js index 921dea6..d1876d0 100644 --- a/apis/enquiryListApi.js +++ b/apis/enquiryListApi.js @@ -14,13 +14,16 @@ export function getEnquiryOrder(data) { /** * 询价单去下单 * swagger:https://api-ops-yyt-test.qniao.cn//base-paper-trading/swagger-ui/index.html?urls.primaryName=CustomerApi#/%E5%8E%9F%E7%BA%B8%E8%AE%A2%E5%8D%95/createCustomerOrderByEnquiryUsingPOST - * + * */ export function createByEnquiry(data) { return http.post( { url: '/base-paper-trading/buyer/paper/goods/reserve/by-enquiry', data + }, + { + isEncrypt: true } ) -} \ No newline at end of file +} diff --git a/apis/orderApi.js b/apis/orderApi.js index 6827c45..87cd5b4 100644 --- a/apis/orderApi.js +++ b/apis/orderApi.js @@ -43,10 +43,15 @@ export const getDefaultAddress = (data) => { * @returns {Promise} */ export const submitClientOrder = (data) => { - return http.post({ - url: '/base-paper-trading/customer/submit/order', - data - }) + return http.post( + { + url: '/base-paper-trading/customer/submit/order', + data + }, + { + isEncrypt: true + } + ) } /** @@ -98,7 +103,7 @@ export function clientDeleteVoucher(data) { } /** - * 客户确认舒活 + * 客户确认收货 * @param {object} data supplierOrderId * @returns {Promise} */ @@ -108,3 +113,15 @@ export function clientConfirmOrder(data) { data }) } + +/** + * 计算不开票价格 + * @param {object} data customerOrderId + * @returns {Promise} + */ +export function calcNotInvoiceOrderInfo(data) { + return http.get({ + url: '/base-paper-trading/get/free/checking/order/calculate', + data + }) +} diff --git a/apis/paperDetailsApi.js b/apis/paperDetailsApi.js index 55db36c..b109b18 100644 --- a/apis/paperDetailsApi.js +++ b/apis/paperDetailsApi.js @@ -17,10 +17,13 @@ export const getPaperDetail = (data = {}) => { * swagger:https://api-ops-yyt-test.qniao.cn//base-paper-trading/swagger-ui/index.html?urls.primaryName=CustomerApi#/ */ export const createGoodsReserve = (data = {}) => { - return http.post({ - url: '/base-paper-trading/buyer/paper/goods/reserve', - data - }) + return http.post( + { + url: '/base-paper-trading/buyer/paper/goods/reserve', + data + }, + { isEncrypt: true } + ) } /** * 加入购物车 @@ -31,4 +34,4 @@ export const createShoppingCar = (data = {}) => { url: '/base-paper-trading/add/shopping-car', data }) -} \ No newline at end of file +} diff --git a/apis/testApi.js b/apis/testApi.js deleted file mode 100644 index c23cd4f..0000000 --- a/apis/testApi.js +++ /dev/null @@ -1,40 +0,0 @@ -import http from '../utils/http/index.js' - -/** - * 获取店铺纸品列表 - * @param {object} data 参数 - * @returns {Promise} - * swagger: http://api-ops-yyt-test.qniao.cn//base-paper-trading/swagger-ui/index.html?urls.primaryName=CustomerApi#/%E5%95%86%E5%93%81%E7%AE%A1%E7%90%86/getStoreProductListForCustomerUsingGET - */ -export const getPaperList = (data = {}) => { - return http.get({ - url: '/base-paper-trading/get/store/product-list/for/customer', - data - }) -} - -/** - * 获取店铺纸品详情 - * @param {object} data 参数 - * @returns {Promise} - * swagger: http://api-ops-yyt-test.qniao.cn//base-paper-trading/swagger-ui/index.html?urls.primaryName=CustomerApi#/%E5%95%86%E5%93%81%E7%AE%A1%E7%90%86/getProductDetailForCustomerUsingGET - */ -export const getPaperDetail = (data = {}) => { - return http.get({ - url: '/base-paper-trading/get/product-detail/for/customer', - data - }) -} - -/** - * 立即订购 - * @param {object} data 参数 - * @returns {Promise} - * swagger: http://api-ops-yyt-test.qniao.cn//base-paper-trading/swagger-ui/index.html?urls.primaryName=CustomerApi#/%E5%8E%9F%E7%BA%B8%E8%AE%A2%E5%8D%95/buyerPaperGoodsReserveUsingPOST - */ -export const purchasePaper = (data = {}) => { - return http.post({ - url: '/base-paper-trading/buyer/paper/goods/reserve', - data - }) -} diff --git a/enums/index.js b/enums/index.js index a7ccb31..bd346c1 100644 --- a/enums/index.js +++ b/enums/index.js @@ -21,6 +21,14 @@ export const accountType = { CUSTOM: 5 } +/** + * 加密类型 1:md5加密 2:sha256加密 + */ +export const encryptType = { + MD5: 1, + SHA256: 2 +} + /** * 验证码用途 */ @@ -217,3 +225,12 @@ export const paymentMethodMap = { [paymentMethodEnum.MONTHLY_PAY]: '月结支付', [paymentMethodEnum.FLY_PAY]: '飞算支付' } + +/** + * 订单是否开票: 0:开票 1:不开票 + * 默认开票 + */ +export const invoiceStatusEnum = { + INVOICE: 0, + NO_INVOICE: 1 +} diff --git a/pages.json b/pages.json index f3dce6c..000a6a7 100644 --- a/pages.json +++ b/pages.json @@ -108,14 +108,6 @@ "navigationStyle": "custom" } }, - { - "path": "pages/test/index", - "style": { - "navigationBarTitleText": "测试页面", - "enablePullDownRefresh": false, - "navigationStyle": "custom" - } - }, { "path": "pages/paper-details/index", "style": { diff --git a/pages/mine/index.vue b/pages/mine/index.vue index 63b43e7..d178e5e 100644 --- a/pages/mine/index.vue +++ b/pages/mine/index.vue @@ -19,7 +19,7 @@ - + + + + 是否开票: + + + + 开票 + + + + 不开票 + + + 送货时间: @@ -128,9 +142,10 @@ diff --git a/store/index.js b/store/index.js index 7e9a772..04261b0 100644 --- a/store/index.js +++ b/store/index.js @@ -1,6 +1,7 @@ import Vue from 'vue' import Vuex from 'vuex' import { isObject, isArray } from '@/utils/is' +import { bindUser } from '@/apis/commonApi' let qnToken = null, /** @@ -33,7 +34,7 @@ const companyInfoParams = [ 'name', 'fddEnterpriseStatus', 'isVip', - 'vipExpireTime', + 'vipExpireTime' ] const userInfoParams = ['name', 'userId', 'mobile', 'avatar'] try { @@ -68,7 +69,7 @@ const store = new Vuex.Store({ companyInfo: companyInfo || {}, // 印包厂信息 nextPage: { name: '', - data: {}, + data: {} }, searchHistory: searchHistory || [], /** @@ -76,8 +77,8 @@ const store = new Vuex.Store({ */ cache: { type: 'none', - data: null, - }, + data: null + } }, mutations: { setCache(state, { type, data }) { @@ -185,6 +186,13 @@ const store = new Vuex.Store({ try { uni.setStorageSync('companyInfo', JSON.stringify(companyInfo)) state.companyInfo = companyInfo + // 绑定供应商销售账号 + bindUser({ + customerEnterpriseId: companyInfo.id, + sellerId: state.userId, + sellerSupplierId: state.supplierId, + customerId: state.userId + }) } catch (e) { console.error('设置companyInfo失败:', e) } @@ -285,7 +293,7 @@ const store = new Vuex.Store({ } catch (e) { console.error('删除userId失败:', e) } - }, + } }, actions: { logout({ commit }) { @@ -305,7 +313,7 @@ const store = new Vuex.Store({ arr = arr.slice(0, 10) } commit('setSearchHistory', arr) - }, - }, + } + } }) export default store diff --git a/utils/http/index.js b/utils/http/index.js index 178dd84..e73a118 100644 --- a/utils/http/index.js +++ b/utils/http/index.js @@ -1,6 +1,7 @@ import Http from './http.js' import env from '@/env/index.js' -import { XAPPID } from '@/enums/index.js' +import { md5 } from '@/utils/md5.js' +import { XAPPID, encryptType } from '@/enums/index.js' // 请求封装文件 const urlEnv = env === 'production' ? '' : `-${env}` @@ -28,7 +29,9 @@ const config = { // 是否返回原始数据 isReturnNativeResponse: false, // 需要对返回数据进行处理 - isTransformResponse: true + isTransformResponse: true, + // 是否加密 + isEncrypt: false } } @@ -74,6 +77,15 @@ const reqInterceptor = (config, options) => { title: '加载中...' }) } + if (options.isEncrypt) { + let data = config.data + const signStr = JSON.stringify(data) + const signStrMore = `&Authorization=${token}&X-APP-ID=${XAPPID}` + const sign = md5(JSON.stringify(data) + signStrMore) + data.sign = sign + data.signStr = signStr + data.signType = encryptType.MD5 + } return config } diff --git a/utils/md5.js b/utils/md5.js new file mode 100644 index 0000000..6d7a565 --- /dev/null +++ b/utils/md5.js @@ -0,0 +1,229 @@ +export function md5(string) { + function RotateLeft(lValue, iShiftBits) { + return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits)) + } + + function AddUnsigned(lX, lY) { + let lX4, lY4, lX8, lY8, lResult + lX8 = lX & 0x80000000 + lY8 = lY & 0x80000000 + lX4 = lX & 0x40000000 + lY4 = lY & 0x40000000 + lResult = (lX & 0x3fffffff) + (lY & 0x3fffffff) + if (lX4 & lY4) { + return lResult ^ 0x80000000 ^ lX8 ^ lY8 + } + if (lX4 | lY4) { + if (lResult & 0x40000000) { + return lResult ^ 0xc0000000 ^ lX8 ^ lY8 + } else { + return lResult ^ 0x40000000 ^ lX8 ^ lY8 + } + } else { + return lResult ^ lX8 ^ lY8 + } + } + + function F(x, y, z) { + return (x & y) | (~x & z) + } + function G(x, y, z) { + return (x & z) | (y & ~z) + } + function H(x, y, z) { + return x ^ y ^ z + } + function I(x, y, z) { + return y ^ (x | ~z) + } + + function FF(a, b, c, d, x, s, ac) { + a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac)) + return AddUnsigned(RotateLeft(a, s), b) + } + + function GG(a, b, c, d, x, s, ac) { + a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac)) + return AddUnsigned(RotateLeft(a, s), b) + } + + function HH(a, b, c, d, x, s, ac) { + a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac)) + return AddUnsigned(RotateLeft(a, s), b) + } + + function II(a, b, c, d, x, s, ac) { + a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac)) + return AddUnsigned(RotateLeft(a, s), b) + } + + function ConvertToWordArray(string) { + let lWordCount + let lMessageLength = string.length + let lNumberOfWords_temp1 = lMessageLength + 8 + let lNumberOfWords_temp2 = + (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64 + let lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16 + let lWordArray = Array(lNumberOfWords - 1) + let lBytePosition = 0 + let lByteCount = 0 + while (lByteCount < lMessageLength) { + lWordCount = (lByteCount - (lByteCount % 4)) / 4 + lBytePosition = (lByteCount % 4) * 8 + lWordArray[lWordCount] = + lWordArray[lWordCount] | + (string.charCodeAt(lByteCount) << lBytePosition) + lByteCount++ + } + lWordCount = (lByteCount - (lByteCount % 4)) / 4 + lBytePosition = (lByteCount % 4) * 8 + lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition) + lWordArray[lNumberOfWords - 2] = lMessageLength << 3 + lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29 + return lWordArray + } + + function WordToHex(lValue) { + let WordToHexValue = '', + WordToHexValue_temp = '', + lByte, + lCount + for (lCount = 0; lCount <= 3; lCount++) { + lByte = (lValue >>> (lCount * 8)) & 255 + WordToHexValue_temp = '0' + lByte.toString(16) + WordToHexValue = + WordToHexValue + + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2) + } + return WordToHexValue + } + + function Utf8Encode(string) { + string = string.replace(/\r\n/g, '\n') + let utftext = '' + + for (let n = 0; n < string.length; n++) { + let c = string.charCodeAt(n) + + if (c < 128) { + utftext += String.fromCharCode(c) + } else if (c > 127 && c < 2048) { + utftext += String.fromCharCode((c >> 6) | 192) + utftext += String.fromCharCode((c & 63) | 128) + } else { + utftext += String.fromCharCode((c >> 12) | 224) + utftext += String.fromCharCode(((c >> 6) & 63) | 128) + utftext += String.fromCharCode((c & 63) | 128) + } + } + + return utftext + } + + let x = Array() + let k, AA, BB, CC, DD, a, b, c, d + let S11 = 7, + S12 = 12, + S13 = 17, + S14 = 22 + let S21 = 5, + S22 = 9, + S23 = 14, + S24 = 20 + let S31 = 4, + S32 = 11, + S33 = 16, + S34 = 23 + let S41 = 6, + S42 = 10, + S43 = 15, + S44 = 21 + + string = Utf8Encode(string) + + x = ConvertToWordArray(string) + + a = 0x67452301 + b = 0xefcdab89 + c = 0x98badcfe + d = 0x10325476 + + for (k = 0; k < x.length; k += 16) { + AA = a + BB = b + CC = c + DD = d + a = FF(a, b, c, d, x[k + 0], S11, 0xd76aa478) + d = FF(d, a, b, c, x[k + 1], S12, 0xe8c7b756) + c = FF(c, d, a, b, x[k + 2], S13, 0x242070db) + b = FF(b, c, d, a, x[k + 3], S14, 0xc1bdceee) + a = FF(a, b, c, d, x[k + 4], S11, 0xf57c0faf) + d = FF(d, a, b, c, x[k + 5], S12, 0x4787c62a) + c = FF(c, d, a, b, x[k + 6], S13, 0xa8304613) + b = FF(b, c, d, a, x[k + 7], S14, 0xfd469501) + a = FF(a, b, c, d, x[k + 8], S11, 0x698098d8) + d = FF(d, a, b, c, x[k + 9], S12, 0x8b44f7af) + c = FF(c, d, a, b, x[k + 10], S13, 0xffff5bb1) + b = FF(b, c, d, a, x[k + 11], S14, 0x895cd7be) + a = FF(a, b, c, d, x[k + 12], S11, 0x6b901122) + d = FF(d, a, b, c, x[k + 13], S12, 0xfd987193) + c = FF(c, d, a, b, x[k + 14], S13, 0xa679438e) + b = FF(b, c, d, a, x[k + 15], S14, 0x49b40821) + a = GG(a, b, c, d, x[k + 1], S21, 0xf61e2562) + d = GG(d, a, b, c, x[k + 6], S22, 0xc040b340) + c = GG(c, d, a, b, x[k + 11], S23, 0x265e5a51) + b = GG(b, c, d, a, x[k + 0], S24, 0xe9b6c7aa) + a = GG(a, b, c, d, x[k + 5], S21, 0xd62f105d) + d = GG(d, a, b, c, x[k + 10], S22, 0x2441453) + c = GG(c, d, a, b, x[k + 15], S23, 0xd8a1e681) + b = GG(b, c, d, a, x[k + 4], S24, 0xe7d3fbc8) + a = GG(a, b, c, d, x[k + 9], S21, 0x21e1cde6) + d = GG(d, a, b, c, x[k + 14], S22, 0xc33707d6) + c = GG(c, d, a, b, x[k + 3], S23, 0xf4d50d87) + b = GG(b, c, d, a, x[k + 8], S24, 0x455a14ed) + a = GG(a, b, c, d, x[k + 13], S21, 0xa9e3e905) + d = GG(d, a, b, c, x[k + 2], S22, 0xfcefa3f8) + c = GG(c, d, a, b, x[k + 7], S23, 0x676f02d9) + b = GG(b, c, d, a, x[k + 12], S24, 0x8d2a4c8a) + a = HH(a, b, c, d, x[k + 5], S31, 0xfffa3942) + d = HH(d, a, b, c, x[k + 8], S32, 0x8771f681) + c = HH(c, d, a, b, x[k + 11], S33, 0x6d9d6122) + b = HH(b, c, d, a, x[k + 14], S34, 0xfde5380c) + a = HH(a, b, c, d, x[k + 1], S31, 0xa4beea44) + d = HH(d, a, b, c, x[k + 4], S32, 0x4bdecfa9) + c = HH(c, d, a, b, x[k + 7], S33, 0xf6bb4b60) + b = HH(b, c, d, a, x[k + 10], S34, 0xbebfbc70) + a = HH(a, b, c, d, x[k + 13], S31, 0x289b7ec6) + d = HH(d, a, b, c, x[k + 0], S32, 0xeaa127fa) + c = HH(c, d, a, b, x[k + 3], S33, 0xd4ef3085) + b = HH(b, c, d, a, x[k + 6], S34, 0x4881d05) + a = HH(a, b, c, d, x[k + 9], S31, 0xd9d4d039) + d = HH(d, a, b, c, x[k + 12], S32, 0xe6db99e5) + c = HH(c, d, a, b, x[k + 15], S33, 0x1fa27cf8) + b = HH(b, c, d, a, x[k + 2], S34, 0xc4ac5665) + a = II(a, b, c, d, x[k + 0], S41, 0xf4292244) + d = II(d, a, b, c, x[k + 7], S42, 0x432aff97) + c = II(c, d, a, b, x[k + 14], S43, 0xab9423a7) + b = II(b, c, d, a, x[k + 5], S44, 0xfc93a039) + a = II(a, b, c, d, x[k + 12], S41, 0x655b59c3) + d = II(d, a, b, c, x[k + 3], S42, 0x8f0ccc92) + c = II(c, d, a, b, x[k + 10], S43, 0xffeff47d) + b = II(b, c, d, a, x[k + 1], S44, 0x85845dd1) + a = II(a, b, c, d, x[k + 8], S41, 0x6fa87e4f) + d = II(d, a, b, c, x[k + 15], S42, 0xfe2ce6e0) + c = II(c, d, a, b, x[k + 6], S43, 0xa3014314) + b = II(b, c, d, a, x[k + 13], S44, 0x4e0811a1) + a = II(a, b, c, d, x[k + 4], S41, 0xf7537e82) + d = II(d, a, b, c, x[k + 11], S42, 0xbd3af235) + c = II(c, d, a, b, x[k + 2], S43, 0x2ad7d2bb) + b = II(b, c, d, a, x[k + 9], S44, 0xeb86d391) + a = AddUnsigned(a, AA) + b = AddUnsigned(b, BB) + c = AddUnsigned(c, CC) + d = AddUnsigned(d, DD) + } + + let temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d) + + return temp.toLowerCase() +}