// uniCloud/cloudfunctions/wechatLogin/index.js
'use strict';
const db = uniCloud.database();

exports.main = async (event, context) => {
	const {
		code
	} = event; // 从客户端接收临时登录凭证 code

	// 1. 用 code 向微信服务器换取 openid 和 session_key
	const appid = 'wxc82a51d9bb13b8c0';
	const secret = '1f5c33add3ef1a3d45d73a710baa7764';
	const url =
		`https://api.weixin.qq.com/sns/jscode2session?appid=${appid}&secret=${secret}&js_code=${code}&grant_type=authorization_code`;

	const res = await uniCloud.httpclient.request(url, {
		dataType: 'json'
	});

	const {
		openid,
		session_key
	} = res.data;

	// 2. 根据 openid 查询或创建用户
	let user = await db.collection('users').where({
		wx_openid: openid
	}).get();

	if (user.data.length === 0) {
		// 新用户，创建记录
		user = await db.collection('users').add({
			wx_openid: openid,
			wx_session_key: session_key,
			register_date: Date.now()
			// ... 其他用户信息
		});
	} else {
		// 老用户，更新 session_key
		user = user.data[0];
		await db.collection('users').doc(user._id).update({
			wx_session_key: session_key,
			last_login_date: Date.now()
		});
	}

	// 3. 生成自定义登录凭证（Token）并返回给前端
	// 注意：实际项目中应使用更安全的Token生成库，如jsonwebtoken
	const token = 'your_generated_token';

	return {
		success: true,
		code: 0,
		message: '登录成功',
		data: {
			token: token,
			userInfo: user
		}
	};
};
