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