From 8308273842b4571f6243613f55f86ad9264a942d Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期三, 29 四月 2026 15:07:25 +0800
Subject: [PATCH] 支付宝支付ddd

---
 app/App.vue |  169 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 167 insertions(+), 2 deletions(-)

diff --git a/app/App.vue b/app/App.vue
index a3c7e0c..237c93d 100644
--- a/app/App.vue
+++ b/app/App.vue
@@ -1,17 +1,182 @@
 <script>
 	import { mapState } from 'vuex'
 	export default {
+		data() {
+			return {
+				locationTimer: null,
+				jpushModule: null
+			}
+		},
 		computed: {
-			...mapState(['userInfo'])
+			...mapState(['userInfo', 'token'])
+		},
+		watch: {
+			token(newVal) {
+				if (newVal) {
+					this.startLocationPolling()
+					this.bindJPushAlias()
+				} else {
+					this.stopLocationPolling()
+					this.deleteJPushAlias()
+				}
+			}
 		},
 		onLaunch: function() {
-			
+			this.initJPush()
+			this.checkAndStartLocationPolling()
+			this.checkAppUpdate()
 		},
 		onShow: function() {
 			console.log('App Show')
+			this.checkAndStartLocationPolling()
 		},
 		onHide: function() {
 			console.log('App Hide')
+			this.stopLocationPolling()
+		},
+		methods: {
+			initJPush() {
+				const jpushModule = uni.requireNativePlugin('JPush')
+				if (!jpushModule) {
+					console.log('鏋佸厜鎺ㄩ�佹彃浠舵湭鎵惧埌锛岃鍏堝畨瑁呮彃浠�')
+					return
+				}
+				this.jpushModule = jpushModule
+
+				jpushModule.init()
+				console.log('鏋佸厜鎺ㄩ�佸垵濮嬪寲鎴愬姛')
+
+				jpushModule.setLoggerEnable(true)
+
+				jpushModule.addReceiveNotificationListener((result) => {
+					console.log('鏀跺埌閫氱煡:', JSON.stringify(result))
+					const extras = result.extras || {}
+					if (extras.type === 'order') {
+						uni.$emit('jpush_order_notification', extras)
+					}
+				})
+
+				jpushModule.addReceiveOpenNotificationListener((result) => {
+					console.log('鐐瑰嚮閫氱煡:', JSON.stringify(result))
+					const extras = result.extras || {}
+					if (extras.type === 'order') {
+						uni.navigateTo({
+							url: '/pages/order-detail/order-detail?id=' + extras.orderId
+						})
+					} else if (extras.type === 'message') {
+						uni.switchTab({
+							url: '/pages/message/message'
+						})
+					}
+				})
+
+				jpushModule.addReceiveMessageListener((result) => {
+					console.log('鏀跺埌閫忎紶娑堟伅:', JSON.stringify(result))
+				})
+
+				jpushModule.getRegistrationID((res) => {
+					console.log('JPush RegistrationID:', res)
+					if (res && res.registerID) {
+						uni.setStorageSync('jpush_registration_id', res.registerID)
+					}
+				})
+			},
+
+			bindJPushAlias() {
+				if (!this.jpushModule || !this.token) return
+				const userId = this.$store.state.userInfo?.id || ''
+				if (userId) {
+					this.jpushModule.setAlias({
+						alias: String(userId),
+						sequence: Date.now()
+					}, (result) => {
+						console.log('璁剧疆鏋佸厜鍒悕鎴愬姛:', JSON.stringify(result))
+					})
+				}
+			},
+
+			deleteJPushAlias() {
+				if (!this.jpushModule) return
+				this.jpushModule.deleteAlias({
+					sequence: Date.now()
+				}, (result) => {
+					console.log('鍒犻櫎鏋佸厜鍒悕鎴愬姛:', JSON.stringify(result))
+				})
+			},
+
+			checkAndStartLocationPolling() {
+				if (this.token) {
+					this.startLocationPolling()
+				}
+			},
+
+			startLocationPolling() {
+				this.stopLocationPolling()
+				this.updateLocation()
+				this.locationTimer = setInterval(() => {
+					this.updateLocation()
+				}, 60000)
+			},
+
+			stopLocationPolling() {
+				if (this.locationTimer) {
+					clearInterval(this.locationTimer)
+					this.locationTimer = null
+				}
+			},
+
+			updateLocation() {
+				uni.getLocation({
+					type: 'gcj02',
+					success: (res) => {
+						this.$u.api.updateLocation({
+							latitude: res.latitude,
+							longitude: res.longitude
+						})
+					}
+				})
+			},
+
+			compareVersion(localVersion, serverVersion) {
+				const v1 = localVersion.split('.')
+				const v2 = serverVersion.split('.')
+				for (let i = 0; i < Math.max(v1.length, v2.length); i++) {
+					const n1 = parseInt(v1[i] || 0)
+					const n2 = parseInt(v2[i] || 0)
+					if (n1 < n2) return -1
+					if (n1 > n2) return 1
+				}
+				return 0
+			},
+
+			checkAppUpdate() {
+				this.$u.api.getApiVersion({ type: 0 }).then(res => {
+					if (res.code === 200 && res.data) {
+						const localVersionCode = plus.runtime.versionCode
+						const serverVersionCode = res.data.versionCode
+						if (serverVersionCode && localVersionCode < serverVersionCode) {
+							const isForce = res.data.isForce === 1
+							uni.showModal({
+								title: '鍙戠幇鏂扮増鏈�',
+								content: res.data.versionInfo || '鏈夋柊鐗堟湰鍙敤锛屾槸鍚︾珛鍗虫洿鏂帮紵',
+								showCancel: !isForce,
+								cancelText: isForce ? '' : '鏆備笉鏇存柊',
+								confirmText: '绔嬪嵆鏇存柊',
+								success: (modalRes) => {
+									if (modalRes.confirm) {
+										if (res.data.fileUrl) {
+											plus.runtime.openURL(res.data.fileUrl)
+										}
+									}
+									if (isForce && modalRes.cancel) {
+										this.checkAppUpdate()
+									}
+								}
+							})
+						}
+					}
+				})
+			}
 		}
 	}
 </script>

--
Gitblit v1.9.3