From f17a10fa1490e4a1840997900770a43ce2ac7313 Mon Sep 17 00:00:00 2001
From: wujingjing <gersonwu@qq.com>
Date: 星期三, 09 四月 2025 17:01:45 +0800
Subject: [PATCH] 资源占用中,请检查后再试~

---
 src/stores/global.ts |  134 +++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 131 insertions(+), 3 deletions(-)

diff --git a/src/stores/global.ts b/src/stores/global.ts
index f82badc..4d219e0 100644
--- a/src/stores/global.ts
+++ b/src/stores/global.ts
@@ -1,12 +1,16 @@
 import type { Ref } from 'vue';
 import { ref } from 'vue';
 import { GetSystemGlobalConfig } from '../api/system';
-import { SSE_URL } from '../constants';
-import { accessSessionKey } from '../utils/request';
+import { SERVE_URL, SSE_URL } from '../constants';
+import { accessSessionKey, userInfoKey } from '../utils/request';
 import { SSEClient } from '../utils/sse/SSEClient';
 import { Local } from '../utils/storage';
 import type { SystemGlobalConfig } from '../views/types';
-
+import { ElLoadingService, ElMessage } from 'element-plus';
+import { handleAfterLogin } from '../layout/component/login/login';
+import { isShowLogin } from './chatRoom';
+import { PostLogin, userBindingWechat } from '../api/ai/user';
+import emitter from '../utils/mitt';
 /**
  * 杩炴帴娑堟伅鍚屾鏈嶅姟
  * @returns
@@ -41,3 +45,127 @@
 	});
 	systemGlobalConfig.value = res.values ?? {};
 };
+
+const resolveWechatInfo = () => {
+	const url = window.location.href;
+	const hashParams = url.split('#')[1];
+	if (!hashParams) return;
+
+	const [path, queryString] = hashParams.split('?');
+	if (!queryString) return;
+
+	const params = new URLSearchParams(queryString);
+	const wxcode = params.get('wxcode');
+	const isLogin = params.get('isWxLogin');
+	if (!wxcode) return;
+
+	return { wxcode, isLogin };
+};
+
+export const checkWechatLogin = async (wxcode: string) => {
+	isShowLogin.value = false;
+	Local.set('isWechatLogin', true);
+	const loadingInstance = ElLoadingService({
+		// text: '鍔犺浇涓�...',
+		target: '.layout-parent',
+	});
+	const res = await PostLogin({
+		weixin_code: wxcode,
+	}).finally(() => {
+		loadingInstance.close();
+	});
+	if (res?.json_ok) {
+		handleAfterLogin(res, false);
+		Local.remove('isWechatLogin');
+
+		// 浣跨敤鏂板湴鍧�鏇挎崲褰撳墠椤甸潰,绉婚櫎寰俊鐧诲綍鍙傛暟
+		// const newUrl = window.location.href.split('?')[0];
+		// window.history.replaceState({}, '', SERVE_URL);
+		window.location.href = SERVE_URL;
+
+		// window.location.reload();
+	} else {
+		// isShowLogin.value = true;
+		Local.set('wechatLoginMsgInfo', {
+			type: 'error',
+			value: res?.json_msg ?? '鐧诲綍澶辫触锛岃妫�鏌ユ槸鍚﹀凡缁戝畾寰俊',
+		});
+		window.location.href = SERVE_URL;
+	}
+};
+
+export const handleBindWechat = async (wxcode: string) => {
+	const userInfo = Local.get(userInfoKey);
+
+	const loadingInstance = ElLoadingService({
+		// text: '鍔犺浇涓�...',
+		target: '.layout-parent',
+	});
+	const res = await userBindingWechat({
+		weixin_code: wxcode,
+		user_name: userInfo.userName,
+	}).finally(() => {
+		loadingInstance.close();
+	});
+	if (res?.json_ok) {
+		ElMessage.success('缁戝畾鎴愬姛');
+		const userInfo = Local.get(userInfoKey);
+		Local.set(userInfoKey, {
+			...userInfo,
+			isBindWechat: true,
+			wechatNickname:res.json_url
+		});
+		setTimeout(() => {
+			window.location.href = SERVE_URL;
+		}, 700);
+	} else {
+		ElMessage.error(res?.json_msg ?? '缁戝畾澶辫触');
+		setTimeout(() => {
+			window.location.href = SERVE_URL;
+		}, 2000);
+	}
+};
+
+export const checkWxOperate = () => {
+	const result = resolveWechatInfo();
+	if (!result) return;
+
+	if (result.isLogin === 'Y') {
+		checkWechatLogin(result.wxcode);
+	} else {
+		handleBindWechat(result.wxcode);
+	}
+};
+
+
+/**
+ * 杩斿洖涓�涓璞★紝缁� parent 璋冪敤
+ * 姝ゅ璞″寘鍚涓嚱鏁�
+ * @returns
+ */
+const childCallObj = {
+	/** @description 娴嬭瘯鍑芥暟 */
+	test: (msg: string) => {
+		console.log('test 鍑芥暟鏉ヨ嚜 child', msg);
+	},
+	execute: (obj: any) => {
+		console.log('execute 鍑芥暟鏉ヨ嚜 child', obj);
+	},
+};
+export class ParentRegister {
+	static notify = null;
+	static setRegisterFunc() {
+		if (!window.parent) return;
+		(window as any).registerNotifyFunction = (notifyFunc: any) => {
+			ParentRegister.notify = notifyFunc;
+			return childCallObj;
+		};
+	}
+
+	static updateChildCallObj(key:string,callback:Function) {
+		childCallObj[key] = callback;
+	}
+}
+
+
+window.callObj = childCallObj;
\ No newline at end of file

--
Gitblit v1.9.3