diff --git a/pages/profile/index.js b/pages/profile/index.js index 1c2e3c1..8ec9eae 100644 --- a/pages/profile/index.js +++ b/pages/profile/index.js @@ -882,8 +882,11 @@ Page({ if (res.data.status === 0) { const address = res.data.result.address; that.setData({ locationInfo: address }); - // 可以将位置信息保存到本地存储 + // 将地址信息保存到本地存储 wx.setStorageSync('locationInfo', address); + + // 保存地址信息到数据库 + that.saveAddressToDatabase(latitude, longitude, address); } else { wx.showToast({ title: '获取地址失败', @@ -901,6 +904,34 @@ Page({ }); }, + // 将地址信息保存到数据库 + saveAddressToDatabase(latitude, longitude, address) { + const api = require('../../utils/api.js'); + const openid = wx.getStorageSync('openid'); + + if (!openid) { + console.error('保存地址失败:用户未登录'); + return; + } + + const addressData = { + openid: openid, + latitude: latitude, + longitude: longitude, + address: address + }; + + console.log('保存地址到数据库:', addressData); + + // 调用API保存地址信息 + api.request('/api/user/update-location', 'POST', addressData) + .then(res => { + console.log('地址保存成功:', res); + }).catch(err => { + console.error('地址保存失败:', err); + }); + }, + // 更新用户名称 updateName(newName) { return new Promise((resolve, reject) => { diff --git a/server-example/server-mysql.js b/server-example/server-mysql.js index 46f488d..20c6aae 100644 --- a/server-example/server-mysql.js +++ b/server-example/server-mysql.js @@ -1188,7 +1188,7 @@ async function createUserAssociations(user) { // 专门用于更新用户位置信息的API端点 app.post('/api/user/update-location', async (req, res) => { try { - const { openid, latitude, longitude } = req.body; + const { openid, latitude, longitude, address } = req.body; if (!openid) { return res.json({ success: false, message: '缺少openid' }); @@ -1203,8 +1203,19 @@ app.post('/api/user/update-location', async (req, res) => { console.log('更新用户位置信息:', { openid, locationJson }); + // 准备要更新的数据 + const updateData = { + authorized_region: locationJson, + updated_at: getBeijingTime() + }; + + // 如果有地址信息,保存到detailedaddress字段 + if (address) { + updateData.detailedaddress = address; + } + const updateResult = await User.update( - { authorized_region: locationJson, updated_at: getBeijingTime() }, + updateData, { where: { openid } } ); @@ -1212,13 +1223,20 @@ app.post('/api/user/update-location', async (req, res) => { if (updateResult[0] > 0) { // 查询更新后的用户数据 - const updatedUser = await User.findOne({ where: { openid }, attributes: ['authorized_region'] }); + const updatedUser = await User.findOne({ + where: { openid }, + attributes: ['authorized_region', 'detailedaddress'] + }); console.log('更新后的位置信息:', updatedUser.authorized_region); + console.log('更新后的地址信息:', updatedUser.detailedaddress); return res.json({ success: true, - message: '位置信息更新成功', - data: { authorized_region: updatedUser.authorized_region } + message: '位置和地址信息更新成功', + data: { + authorized_region: updatedUser.authorized_region, + address: updatedUser.detailedaddress + } }); } else { return res.json({ success: false, message: '用户不存在或位置信息未更新' });