From cfe0b79fbea0fb1d7a5a796e71ada7d3b7812046 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期一, 15 十二月 2025 22:31:33 +0800
Subject: [PATCH] feat: 企业微信发送微信小程序cetd

---
 app/utils/wechat.js |  127 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 127 insertions(+), 0 deletions(-)

diff --git a/app/utils/wechat.js b/app/utils/wechat.js
new file mode 100644
index 0000000..3c05e14
--- /dev/null
+++ b/app/utils/wechat.js
@@ -0,0 +1,127 @@
+/**
+ * 寰俊鐜妫�娴嬪拰璺宠浆宸ュ叿绫�
+ */
+
+/**
+ * 妫�鏌ユ槸鍚︿负浼佷笟寰俊鐜
+ * @returns {Promise<boolean>} 鏄惁涓轰紒涓氬井淇$幆澧�
+ */
+export function isWxWorkEnvironment() {
+  return new Promise((resolve) => {
+    // #ifdef MP-WEIXIN
+    try {
+      // 鑾峰彇绯荤粺淇℃伅
+      const systemInfo = uni.getSystemInfoSync();
+      // 妫�鏌nvironment瀛楁鏄惁涓簑xwork
+      const isWxWork = systemInfo.environment === 'wxwork';
+      console.log('鐜妫�娴嬬粨鏋�:', isWxWork, systemInfo);
+      resolve(isWxWork);
+    } catch (e) {
+      console.error('鑾峰彇绯荤粺淇℃伅澶辫触:', e);
+      // fallback妫�娴�
+      resolve(false);
+    }
+    // #endif
+    
+    // #ifndef MP-WEIXIN
+    resolve(false);
+    // #endif
+  });
+}
+
+/**
+ * 鏋勯�犲甫鍙傛暟鐨刄RL
+ * @param {string} baseUrl 鍩虹URL
+ * @param {Object} queryParameters 鏌ヨ鍙傛暟瀵硅薄
+ * @returns {string} 鏋勯�犲悗鐨刄RL
+ */
+export function buildUrlWithParams(baseUrl, queryParameters) {
+  if (!queryParameters) return baseUrl;
+  
+  const queryParams = Object.keys(queryParameters)
+    .map(key => `${key}=${encodeURIComponent(queryParameters[key])}`)
+    .join('&');
+    
+  if (queryParams) {
+    return baseUrl + '?' + queryParams;
+  }
+  
+  return baseUrl;
+}
+
+/**
+ * 鏍规嵁鐜鑷姩璺宠浆鍒板悎閫傜殑鐧诲綍椤甸潰
+ * @param {Object} options 鍚姩鍙傛暟
+ * @param {Object} tab tab瀵艰埅瀵硅薄
+ */
+export async function redirectToLoginByEnvironment(options, tab) {
+  // #ifdef MP-WEIXIN
+  // 鍦ㄥ井淇″皬绋嬪簭鐜涓�
+  try {
+    const isWxWork = await isWxWorkEnvironment();
+    
+    if (isWxWork) {
+      console.log('妫�娴嬪埌浼佷笟寰俊鐜锛岃烦杞埌浼佷笟寰俊鍏嶇櫥椤甸潰');
+      // 鏋勯�犲甫鍙傛暟鐨刄RL
+      redirectToQyLogin(options, tab);
+      return;
+    } else {
+      console.log('妫�娴嬪埌鏅�氬井淇$幆澧冿紝璺宠浆鍒板井淇$櫥褰曢〉闈�');
+      redirectToLogin(options, tab);
+      return;
+    }
+  } catch (e) {
+    console.error('鐜妫�娴嬪け璐�:', e);
+    redirectToLogin(options, tab);
+  }
+  // #endif
+  
+  // #ifndef MP-WEIXIN
+  // 闈炲井淇″皬绋嬪簭鐜锛岃烦杞埌鏅�氱櫥褰曢〉闈�
+  console.log('闈炲井淇″皬绋嬪簭鐜锛岃烦杞埌鏅�氱櫥褰曢〉闈�');
+  redirectToLogin(options, tab);
+  // #endif
+}
+
+
+export function redirectToQyLogin(options, tab) {
+  try {
+    let url = '/pages/qylogin';
+    if (options && options.query) {
+      url = buildUrlWithParams(url, options.query);
+    }
+    console.log('璺宠浆鍒颁紒涓氬井淇$櫥褰曢〉闈�:', url);
+    tab.reLaunch(url);
+  } catch (e) {
+    console.error('璺宠浆鍒颁紒涓氬井淇$櫥褰曢〉闈㈠け璐�:', e);
+    // fallback鍒版櫘閫氱櫥褰曢〉闈�
+    redirectToLogin(options, tab);
+  }
+}
+
+export function redirectToLogin(options, tab) {
+  try {
+    let url = '/pages/login';
+    if (options && options.query) {
+      url = buildUrlWithParams(url, options.query);
+    }
+    console.log('璺宠浆鍒版櫘閫氱櫥褰曢〉闈�:', url);
+    tab.reLaunch(url);
+  } catch (e) {
+    console.error('璺宠浆鍒版櫘閫氱櫥褰曢〉闈㈠け璐�:', e);
+    // 濡傛灉璺宠浆澶辫触锛岃嚦灏戠‘淇濅笉浼氬崱鍦ㄥ綋鍓嶉〉闈�
+    try {
+      tab.reLaunch('/pages/login');
+    } catch (fallbackError) {
+      console.error('fallback璺宠浆涔熷け璐ヤ簡:', fallbackError);
+    }
+  }
+}
+
+export default {
+  isWxWorkEnvironment,
+  buildUrlWithParams,
+  redirectToLogin,
+  redirectToQyLogin,
+  redirectToLoginByEnvironment
+};
\ No newline at end of file

--
Gitblit v1.9.1