From 90f61e65526414dd58d04a0f64c1cc1099816486 Mon Sep 17 00:00:00 2001 From: no99 <17663930442@163.com> Date: Wed, 20 Aug 2025 15:08:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E5=B7=AEapp=E8=B7=B3=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 ++ .env.production | 1 + src/api/AIxiaocaishen.js | 40 ++++++++++++++++++++-- src/store/chat.js | 1 + src/store/dataList.js | 21 +++++++++--- src/views/Selectmodel.vue | 5 +-- src/views/homePage.vue | 87 ++++++++++++++++++++++++++++++++++++++--------- 7 files changed, 131 insertions(+), 26 deletions(-) diff --git a/.env.development b/.env.development index 0861630..4ca3e12 100644 --- a/.env.development +++ b/.env.development @@ -10,6 +10,8 @@ VITE_APP_API_BASE_URL = "http://39.101.133.168:8828/link" VITE_APP_API_BASE_CAZE_URL = "http://39.101.133.168:8828/link" # VITE_APP_API_BASE_CAZE_URL = "https://api.homilychart.com/link" +VITE_APP_API_BASE_HW_URL = "http://39.101.133.168:8828/hljw" + VITE_APP_IMG_API_BASE_URL = "http://39.101.133.168:8828/hljw/api/aws/upload" #MJ API VITE_APP_MJ_API_BASE_URL = "http://192.168.9.19:8080/api" diff --git a/.env.production b/.env.production index 230ac6d..d6d10e3 100644 --- a/.env.production +++ b/.env.production @@ -14,6 +14,7 @@ VITE_APP_API_BASE_URL = https://api.homilychart.com/link VITE_APP_API_BASE_CAZE_URL = "https://api.homilychart.com/link" # VITE_APP_API_BASE_CAZE_URL = "http://39.101.133.168:8828/link" +VITE_APP_API_BASE_HW_URL = "https://api.homilychart.com/hljw" VITE_APP_IMG_API_BASE_URL = "https://api.homilychart.com/hljw/api/aws/upload" #MJ API diff --git a/src/api/AIxiaocaishen.js b/src/api/AIxiaocaishen.js index c1650ac..6fb35ce 100644 --- a/src/api/AIxiaocaishen.js +++ b/src/api/AIxiaocaishen.js @@ -3,6 +3,7 @@ import request from "../utils/request"; const APIurl = import.meta.env.VITE_APP_API_BASE_URL; const cozeAPIurl = import.meta.env.VITE_APP_API_BASE_CAZE_URL; const MJAPIurl = import.meta.env.VITE_APP_MJ_API_BASE_URL; +const HWurl = import.meta.env.VITE_APP_API_BASE_HW_URL; //各个模块权限code接口 export const pessionAPI = function (params) { return request({ @@ -308,7 +309,7 @@ export const clickRecordAPI = function (params) { export const showExchangeAPI = function (params) { return request({ - url: `http://192.168.1.22:8080/api/showExchange`, + url: `${APIurl}/api/showExchange`, method: "POST", data: params, headers: { @@ -317,4 +318,39 @@ export const showExchangeAPI = function (params) { }); }; -// 8.18金币兑换Token end \ No newline at end of file +export const godExchangeAPI = function (params) { + return request({ + url: `${APIurl}/api/godExchange`, + method: "POST", + data: params, + headers: { + token: localStorage.getItem("localToken"), + }, + }); +}; + +export const exchangeAPI = function (params) { + return request({ + url: `${APIurl}/api/exchange`, + method: "POST", + data: params, + }); +}; + +export const getGoldCoinAPI = function (params) { + return request({ + url: `${HWurl}/api/haiwai/user/getGoldCoin`, + method: "POST", + data: params, + }); +}; + +export const getUserInfoAPI = function (params) { + return request({ + url: `${HWurl}/api/v2/member/info`, + method: "POST", + data: params, + }); +}; + +// 8.18金币兑换Token end diff --git a/src/store/chat.js b/src/store/chat.js index 2410247..99a1489 100644 --- a/src/store/chat.js +++ b/src/store/chat.js @@ -40,6 +40,7 @@ export const useChatStore = defineStore("chat", { this.kLineData.push(data); }, }, + persist: { key: "chat_messages", storage: sessionStorage, diff --git a/src/store/dataList.js b/src/store/dataList.js index d41474d..7c54dc8 100644 --- a/src/store/dataList.js +++ b/src/store/dataList.js @@ -2,7 +2,7 @@ import { defineStore } from "pinia"; import { ref, watch } from "vue"; import { useUserStore } from "./userPessionCode"; import { useLanguage } from "@/utils/languageService"; -import { dataListAPI } from "@/api/AIxiaocaishen"; +import { dataListAPI, getUserInfoAPI } from "@/api/AIxiaocaishen"; // import { useSkeletonStore } from '@/utils/skeletonLoader' import { useRoute } from "vue-router"; // const skeletonStore = useSkeletonStore() @@ -25,6 +25,7 @@ export const useDataStore = defineStore("data", () => { const klineData = ref(null); const activeTabIndex = ref(null); const isFeedback = ref(false); // 用于控制是否显示反馈页面的标志 + const userInfo = ref({}); const setKlineData = (data) => { klineData.value = data; }; @@ -64,7 +65,7 @@ export const useDataStore = defineStore("data", () => { const market = ref(getQueryVariable("market")); const code = ref(getQueryVariable("code")); console.log(token.value); // 输出 token 的值,例如 "111" - const fetchChartData = async (market,code) => { + const fetchChartData = async (market, code) => { const getTokenString = String(localStorage.getItem("localToken")); // const getMarketString = String(localStorage.getItem("localMarket")); // const getCodeString = String(localStorage.getItem("localCode")); @@ -155,6 +156,14 @@ export const useDataStore = defineStore("data", () => { return ""; }; + const getUserInfo = async () => { + const getTokenString = String(localStorage.getItem("localToken")); + const res = await getUserInfoAPI({ + token: getTokenString || "", + }); + userInfo.value = res.data; + }; + const isLoading = ref(true); const initData = async () => { isLoading.value = true; @@ -182,9 +191,9 @@ export const useDataStore = defineStore("data", () => { () => window.location.ancestorOrigins, (newQuery, oldQuery) => { console.log("newQuery", newQuery); - // if () { - // fetchChartData(); - // } + // if () { + // fetchChartData(); + // } } ); @@ -214,5 +223,7 @@ export const useDataStore = defineStore("data", () => { getQueryVariable, setActiveTabIndex, isFeedback, + userInfo, + getUserInfo, }; }); diff --git a/src/views/Selectmodel.vue b/src/views/Selectmodel.vue index 08b1317..f546e63 100644 --- a/src/views/Selectmodel.vue +++ b/src/views/Selectmodel.vue @@ -34,8 +34,7 @@ import { onMounted, ref } from "vue"; import { useRouter } from "vue-router"; import { setHeight } from "@/utils/setHeight"; import { useDataStore } from "@/store/dataList.js"; -const { getQueryVariable, setActiveTabIndex } = useDataStore(); - +const { getQueryVariable, setActiveTabIndex, getUserInfo } = useDataStore(); import robot from "@/assets/img/Selectmodel/机器人 拷贝.png"; const router = useRouter(); @@ -59,6 +58,8 @@ onMounted(() => { // "localToken", // "pCtw6AYK0EHAaIexoFHsbZjtsfEAIhcmwkCFm6uKko8VPfMvyDiODL9v9c0veic9fIpQbvT8zN4sH/Si6Q" // ); + + getUserInfo(); }); const goToDBQBmodel = () => { diff --git a/src/views/homePage.vue b/src/views/homePage.vue index b542016..647eca0 100644 --- a/src/views/homePage.vue +++ b/src/views/homePage.vue @@ -2,7 +2,13 @@ // 导入 import { ref, computed, onMounted, watch, nextTick, onUnmounted, h } from "vue"; import { setHeight } from "../utils/setHeight"; -import { getUserCountAPI, showExchangeAPI } from "../api/AIxiaocaishen"; +import { + getUserCountAPI, + showExchangeAPI, + godExchangeAPI, + exchangeAPI, + getGoldCoinAPI, +} from "../api/AIxiaocaishen"; import { ElMessage } from "element-plus"; import AIchat from "./AIchat.vue"; import AIfind from "./AIfind.vue"; @@ -45,7 +51,7 @@ const aiEmotionRef = ref(null); // 获取历史记录组件的 ref const historyRecordRef = ref(null); // import { useUserStore } from "../store/userPessionCode.js"; -const { getQueryVariable, setActiveTabIndex } = useDataStore(); +const { getQueryVariable, setActiveTabIndex, getUserInfo } = useDataStore(); const dataStore = useDataStore(); const chatStore = useChatStore(); // 变量 @@ -894,9 +900,9 @@ const backToHome = () => { // 8.18金币兑换Token start const userInfo = ref({ - username: "HomilyLink", - jwcode: "90042088", - img: " https://d31zlh4on95l9h.cloudfront.net/images/403ef762dd2f335df3b0c9e3fe488375.png", + nickname: "", + img: "", + jwcode: "", }); const changeRule = ref({ gold: 1, @@ -922,13 +928,40 @@ const rechargeDialogVisible = ref(false); const confirmDialogVisible = ref(false); const changeSuccessDialogVisible = ref(false); +// 图片加载错误处理 +const handleImageError = (event) => { + console.error("图片加载失败:", event.target.src); + // 可以设置默认图片或重试逻辑 + event.target.src = + "https://cdn.legu168.com/jtzy/Product/pcjingwang/images/userimg.png"; +}; + // 获取次数 const showCount = async () => { try { - const res = await showExchangeAPI(); + if ( + !dataStore.userInfo.img || + !dataStore.userInfo.nickname || + !dataStore.userInfo.jwcode + ) { + console.log("缺少用户信息,调用方法"); + await getUserInfo(); + } + + userInfo.value.nickname = dataStore.userInfo.nickname; + userInfo.value.img = dataStore.userInfo.img; + userInfo.value.jwcode = dataStore.userInfo.jwcode; + console.log("userInfo", userInfo.value); + const [res, res2] = await Promise.all([ + showExchangeAPI(), + getGoldCoinAPI({ + token: String(localStorage.getItem("localToken")), + }), + ]); changeLevelList.value = res.data; activeLevel.value = changeLevelList.value[0]; changeRule.value.token = res.data[0].ratio; + gold.value = res2.data.total; // 显示弹窗 dialogVisible.value = true; @@ -988,13 +1021,25 @@ const goRecharge = () => { } }; -const goChange = () => { - confirmDialogVisible.value = false; - dialogVisible.value = false; - changeSuccessDialogVisible.value = true; - setTimeout(() => { - changeSuccessDialogVisible.value = false; - }, 2000); +const goChange = async () => { + try { + await exchangeAPI({ + token: String(localStorage.getItem("localToken")), + num: activeLevel.value.position, + }); + + confirmDialogVisible.value = false; + dialogVisible.value = false; + changeSuccessDialogVisible.value = true; + setTimeout(() => { + changeSuccessDialogVisible.value = false; + }, 2000); + + // 刷新次数 + await chatStore.getUserCount(); + } catch (e) { + console.error("兑换失败", e); + } }; // 8.18金币兑换Token end @@ -1028,7 +1073,8 @@ onMounted(async () => { sessionStorage.getItem("rechargeFlag") == "1" && getQueryVariable("successType") == "success" ) { - dialogVisible.value = true; + await godExchangeAPI({ state: 1 }); + showCount(); sessionStorage.setItem("rechargeFlag", "0"); } }); @@ -1328,15 +1374,20 @@ onUnmounted(() => { - +
- 头像 + 头像
-
{{ userInfo.username }}
+
{{ userInfo.nickname }}
精网号:{{ userInfo.jwcode }}
@@ -2020,6 +2071,8 @@ body { } .changeImgClass { + width: 50px; + height: auto; } .changeContent {