diff --git a/api/home/mySelections.js b/api/home/mySelections.js index 21cabd3..4a99366 100644 --- a/api/home/mySelections.js +++ b/api/home/mySelections.js @@ -1,9 +1,9 @@ /** * 我的自选股相关API接口封装 - * 使用common/util.js中的请求方法 + * 使用utils/http.js中的拦截器封装请求方法 */ -import util from '../../common/util.js' +import { http } from '../../utils/http.js' /** * 我的自选股API接口类 @@ -15,27 +15,30 @@ class MySelectionsAPI { * @param {Function} successCallback - 成功回调函数 * @param {Function} failCallback - 失败回调函数 * @param {Object} data - 请求参数 - * @returns {void} + * @returns {Promise} */ - static checkExist(successCallback, failCallback = null, data = {}) { + static async checkExist(successCallback, failCallback = null, data = {}) { const url = '/api/homePage/userStock/checkExist' - util.request( - url, - (response) => { - console.log('检查用户自选股分组存在性 - 响应:', response) - if (successCallback && typeof successCallback === 'function') { - successCallback(response) - } - }, - data, - (error) => { - console.error('检查用户自选股分组存在性 - 失败:', error) - if (failCallback && typeof failCallback === 'function') { - failCallback(error) - } + try { + const response = await http({ + url: url, + method: 'POST', + data: data + }) + + console.log('检查用户自选股分组存在性 - 响应:', response) + if (successCallback && typeof successCallback === 'function') { + successCallback(response) } - ) + return response + } catch (error) { + console.error('检查用户自选股分组存在性 - 失败:', error) + if (failCallback && typeof failCallback === 'function') { + failCallback(error) + } + throw error + } } /** @@ -43,27 +46,30 @@ class MySelectionsAPI { * @param {Function} successCallback - 成功回调函数 * @param {Function} failCallback - 失败回调函数 * @param {Object} data - 请求参数 - * @returns {void} + * @returns {Promise} */ - static getUserStockGroupList(successCallback, failCallback = null, data = {}) { + static async getUserStockGroupList(successCallback, failCallback = null, data = {}) { const url = '/api/homePage/userStockGroup/list' - util.request( - url, - (response) => { - console.log('查询用户自选股分组列表 - 响应:', response) - if (successCallback && typeof successCallback === 'function') { - successCallback(response) - } - }, - data, - (error) => { - console.error('查询用户自选股分组列表 - 失败:', error) - if (failCallback && typeof failCallback === 'function') { - failCallback(error) - } + try { + const response = await http({ + url: url, + method: 'POST', + data: data + }) + + console.log('查询用户自选股分组列表 - 响应:', response) + if (successCallback && typeof successCallback === 'function') { + successCallback(response) } - ) + return response + } catch (error) { + console.error('查询用户自选股分组列表 - 失败:', error) + if (failCallback && typeof failCallback === 'function') { + failCallback(error) + } + throw error + } } /** @@ -71,9 +77,9 @@ class MySelectionsAPI { * @param {Function} successCallback - 成功回调函数 * @param {Function} failCallback - 失败回调函数 * @param {Object} data - 请求参数 {groupId, pageNum, pageSize, ...} - * @returns {void} + * @returns {Promise} */ - static getUserStockList(successCallback, failCallback = null, data = {}) { + static async getUserStockList(successCallback, failCallback = null, data = {}) { const url = '/api/homePage/userStock/list' // 设置默认分页参数 @@ -83,22 +89,25 @@ class MySelectionsAPI { ...data } - util.request( - url, - (response) => { - console.log('分页查询分组自选股 - 响应:', response) - if (successCallback && typeof successCallback === 'function') { - successCallback(response) - } - }, - requestData, - (error) => { - console.error('分页查询分组自选股 - 失败:', error) - if (failCallback && typeof failCallback === 'function') { - failCallback(error) - } + try { + const response = await http({ + url: url, + method: 'POST', + data: requestData + }) + + console.log('分页查询分组自选股 - 响应:', response) + if (successCallback && typeof successCallback === 'function') { + successCallback(response) } - ) + return response + } catch (error) { + console.error('分页查询分组自选股 - 失败:', error) + if (failCallback && typeof failCallback === 'function') { + failCallback(error) + } + throw error + } } /** @@ -106,27 +115,30 @@ class MySelectionsAPI { * @param {Function} successCallback - 成功回调函数 * @param {Function} failCallback - 失败回调函数 * @param {Object} data - 请求参数 - * @returns {void} + * @returns {Promise} */ - static getUserOrDefault(successCallback, failCallback = null, data = {}) { + static async getUserOrDefault(successCallback, failCallback = null, data = {}) { const url = '/api/homePage/userStock/getUserOrDefault' - util.request( - url, - (response) => { - console.log('查询默认自选股 - 响应:', response) - if (successCallback && typeof successCallback === 'function') { - successCallback(response) - } - }, - data, - (error) => { - console.error('查询默认自选股 - 失败:', error) - if (failCallback && typeof failCallback === 'function') { - failCallback(error) - } + try { + const response = await http({ + url: url, + method: 'POST', + data: data + }) + + console.log('查询默认自选股 - 响应:', response) + if (successCallback && typeof successCallback === 'function') { + successCallback(response) } - ) + return response + } catch (error) { + console.error('查询默认自选股 - 失败:', error) + if (failCallback && typeof failCallback === 'function') { + failCallback(error) + } + throw error + } } } diff --git a/pages/home/home.vue b/pages/home/home.vue index 92c129c..62b45e9 100644 --- a/pages/home/home.vue +++ b/pages/home/home.vue @@ -2,7 +2,8 @@ - + + @@ -194,6 +195,7 @@ import DeepMate from '../../components/DeepMate.vue' import tcpConnection from '../../api/tcpConnection.js' import th from '../../static/language/th' import MySelectionsAPI from '../../api/home/mySelections.js' +import { useUserStore } from '../../stores/modules/userInfo' export default { components: { footerBar, @@ -205,6 +207,9 @@ export default { type: 'home', iSMT: 0, + // 用户信息 store + userStore: null, + // 深度探索数据 explorationItems: [ { title: '主力追踪', icon: '/static/c1.png' }, @@ -319,6 +324,9 @@ export default { // 状态栏高度 this.iSMT = uni.getSystemInfoSync().statusBarHeight; + // 初始化用户信息 store + this.userStore = useUserStore(); + // 预加载图片资源 this.myStocks.forEach(stock => { // 使用uni.getImageInfo替代Image对象 @@ -337,6 +345,14 @@ export default { // 初始化TCP连接监听器 this.initTcpListeners() + // 检查用户登录状态,只有已登录才加载自选股数据 + if (this.userStore.userInfo) { + console.log('用户已登录,加载自选股数据') + this.loadMySelectionsData() + } else { + console.log('用户未登录,跳过自选股数据加载') + } + // 页面渲染完成后自动连接两个TCP连接 // this.$nextTick(() => { // console.log('页面渲染完成,开始自动连接TCP服务器...') @@ -401,6 +417,147 @@ export default { }, delay) }, + // 自选股数据加载相关方法 + + // 加载自选股数据的主方法 + async loadMySelectionsData() { + try { + console.log('开始加载自选股数据...') + + // 调用checkExist判断用户是否存在自选股 + const checkResult = await MySelectionsAPI.checkExist() + console.log('检查用户自选股存在性结果:', checkResult) + + if (checkResult.code === 200) { + const isHave = checkResult.data.is_have + + if (isHave === 1) { + // 用户有自选股,查询所有分组 + console.log('用户存在自选股,查询所有分组...') + await this.loadUserStockGroups() + } else { + // 用户没有自选股,查询默认自选股 + console.log('用户不存在自选股,查询默认自选股...') + await this.loadDefaultStocks() + } + } else { + console.error('检查用户自选股存在性失败:', checkResult.message) + // 失败时也尝试加载默认自选股 + await this.loadDefaultStocks() + } + } catch (error) { + console.error('加载自选股数据失败:', error) + // 出错时尝试加载默认自选股 + await this.loadDefaultStocks() + } + }, + + // 加载用户自选股分组 + async loadUserStockGroups() { + try { + const groupResult = await MySelectionsAPI.getUserStockGroupList() + console.log('查询用户自选股分组结果:', groupResult) + + if (groupResult.code === 200 && groupResult.data && groupResult.data.length > 0) { + // 找到id最小的分组 + const minIdGroup = groupResult.data.reduce((min, current) => { + return current.id < min.id ? current : min + }) + + console.log('找到最小id分组:', minIdGroup) + + // 查询该分组下的股票 + await this.loadGroupStocks(minIdGroup.id) + } else { + console.log('没有找到用户自选股分组,加载默认自选股') + await this.loadDefaultStocks() + } + } catch (error) { + console.error('加载用户自选股分组失败:', error) + await this.loadDefaultStocks() + } + }, + + // 加载指定分组下的股票 + async loadGroupStocks(groupId) { + try { + const stockResult = await MySelectionsAPI.getUserStockList(null, null, { + groupId: groupId, + pageNum: 1, + pageSize: 20 + }) + + console.log('查询分组自选股结果:', stockResult) + + if (stockResult.code === 200 && stockResult.data) { + this.processStockData(stockResult.data) + } else { + console.log('分组下没有股票数据,加载默认自选股') + await this.loadDefaultStocks() + } + } catch (error) { + console.error('加载分组股票失败:', error) + await this.loadDefaultStocks() + } + }, + + // 加载默认自选股 + async loadDefaultStocks() { + try { + const defaultResult = await MySelectionsAPI.getUserOrDefault() + console.log('查询默认自选股结果:', defaultResult) + + if (defaultResult.code === 200 && defaultResult.data) { + this.processStockData(defaultResult.data) + } else { + console.log('没有默认自选股数据') + } + } catch (error) { + console.error('加载默认自选股失败:', error) + } + }, + + // 处理股票数据 + processStockData(stockData) { + console.log('处理股票数据:', stockData) + + // 根据返回的数据结构更新myStocks数组 + // 这里需要根据实际API返回的数据结构进行调整 + if (Array.isArray(stockData)) { + // 如果是数组格式 + this.myStocks = stockData.map(stock => ({ + name: stock.name || stock.stock_name || '', + code: stock.code || stock.stock_code || '', + // price: stock.price || stock.current_price || '0.00', + // change: stock.change || stock.change_percent || 0, + chartImg: stock.chartImg || '/static/c5.png' // 默认图片 + })) + //重新赋值机构动向简报 + this.institutionalReports = stockData.map(stock => ({ + stock: stock.name || stock.stock_name || '', + status: stock.code || stock.stock_code || '', + + })) + } else if (stockData.list && Array.isArray(stockData.list)) { + // 如果是分页格式 + this.myStocks = stockData.list.map(stock => ({ + name: stock.name || stock.stock_name || '', + code: stock.code || stock.stock_code || '', + // price: stock.price || stock.current_price || '0.00', + // change: stock.change || stock.change_percent || 0, + chartImg: stock.chartImg || '/static/c5.png' // 默认图片 + })) + //重新赋值机构动向简报 + //重新赋值机构动向简报 + this.institutionalReports = stockData.map(stock => ({ + stock: stock.name || stock.stock_name || '', + status: stock.code || stock.stock_code || '', + })) + } + + console.log('更新后的自选股数据:', this.myStocks) + }, + // TCP连接相关方法 // 初始化TCP监听器 diff --git a/utils/http.js b/utils/http.js index b4a2740..2aff8f6 100644 --- a/utils/http.js +++ b/utils/http.js @@ -43,10 +43,12 @@ const httpInterceptor = { //4 添加token,优先用store,没有则回退到body中的token,保持与Apifox一致 const memberStore = useUserStore() const token = memberStore.userInfo?.token || options.data?.token + // const token = '2d0b5654409646713cdd40ec0d0bb56c' // const token = '1b3a58424c5324e40d4bf4d085e18047' if (token) { options.header.token = token } + console.log("最终请求参数:",options) // 避免误用 Authorization 头,后端要求的是 token 头 // if (options.header.Authorization) delete options.header.Authorization return options