Browse Source

修复用户轨迹记录功能,添加售空商品覆盖层,优化广告布局

pull/19/head
Trae AI 2 months ago
parent
commit
b679876aa0
  1. 5
      pages/index/index.js
  2. 73
      server-example/server-mysql.js
  3. 35
      utils/api.js

5
pages/index/index.js

@ -2246,6 +2246,11 @@ Page({
// 记录已浏览商品
this.markGoodsAsViewed(productId);
// 记录用户轨迹
API.addUserTrace(item).catch(err => {
console.error('记录用户踪迹失败:', err);
});
// 将完整的商品数据传递给详情页,包含联系人信息,与buyer页面保持一致
// 同时传递登录状态信息,让详情页决定是否显示登录弹窗

73
server-example/server-mysql.js

@ -1069,6 +1069,41 @@ UserManagement.init({
timestamps: false
});
// 用户踪迹表模型
class UserTrace extends Model { }
UserTrace.init({
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
phoneNumber: {
type: DataTypes.STRING(100),
allowNull: true,
comment: '电话号码'
},
userId: {
type: DataTypes.STRING(100),
allowNull: false,
comment: '客户ID'
},
operationTime: {
type: DataTypes.DATE,
defaultValue: Sequelize.NOW,
comment: '操作时间'
},
originalData: {
type: DataTypes.TEXT,
allowNull: true,
comment: '原始数据JSON'
}
}, {
sequelize,
modelName: 'UserTrace',
tableName: 'usertraces',
timestamps: false
});
// 价格资源模型 - 用于估价功能(匹配实际数据库表结构)
class Resources extends Model { }
Resources.init({
@ -1794,6 +1829,44 @@ app.post('/api/user/get', async (req, res) => {
}
});
// 添加用户踪迹记录
app.post('/api/user-trace/add', async (req, res) => {
try {
const { phoneNumber, userId, originalData } = req.body;
if (!userId || !originalData) {
return res.status(400).json({
success: false,
code: 400,
message: '缺少必要参数userId或originalData'
});
}
// 创建用户踪迹记录
const trace = await UserTrace.create({
phoneNumber: phoneNumber || '',
userId: userId,
operationTime: new Date(),
originalData: JSON.stringify(originalData)
});
res.json({
success: true,
code: 200,
message: '用户踪迹记录添加成功',
data: trace
});
} catch (error) {
console.error('添加用户踪迹记录失败:', error);
res.status(500).json({
success: false,
code: 500,
message: '添加用户踪迹记录失败',
error: error.message
});
}
});
// 更新用户信息
app.post('/api/user/update', async (req, res) => {
try {

35
utils/api.js

@ -332,12 +332,45 @@ function request(url, method, data, requestContext = {}) {
});
}
// 添加用户踪迹记录功能
function addUserTrace(traceData) {
console.log('API.addUserTrace - traceData:', traceData);
// 获取必要的用户信息
const userId = wx.getStorageSync('userId');
const userPhone = wx.getStorageSync('userInfo')?.phoneNumber || wx.getStorageSync('phoneNumber') || '';
if (!userId) {
console.warn('用户未登录,无法记录用户踪迹');
return Promise.resolve({ success: false, message: '用户未登录' });
}
const requestData = {
phoneNumber: userPhone,
userId: userId,
originalData: traceData
};
return request('/api/user-trace/add', 'POST', requestData).then(res => {
console.log('用户踪迹记录成功:', res);
return res;
}).catch(err => {
console.error('用户踪迹记录失败:', err);
// 即使记录失败,也不影响主流程
return { success: false, message: '用户踪迹记录失败' };
});
}
// 导出统一的API对象 - 合并基础API和其他功能
module.exports = {
// 包含基础API功能
...baseApi,
// 添加request函数
request: request,
// 添加用户踪迹记录功能
addUserTrace: addUserTrace,
// 添加商品到购物车 - 增强版本,即使本地找不到商品也尝试直接请求服务器
addToCart: function (goodsItem) {
return new Promise((resolve, reject) => {
@ -1156,7 +1189,7 @@ module.exports = {
return { success: false, message: '聊天记录修复失败:' + err.message };
});
},
// 获取商品列表方法,用于goods页面
getGoodsList: function (params) {
console.log('API.getGoodsList - params:', params);

Loading…
Cancel
Save