const cloud = require('wx-server-sdk') const request = require('request') cloud.init() const db = cloud.database() const _ = db.command const $ = db.command.aggregate /** * 返回用户信息 * @param {*} loginname * @param {*} username */ const getUserInfo = (loginname, username) => { return new Promise((resolve, reject) => { request.post('https://zhihuigonghui.com.cn/platform/fitnessWalk/login', { form: { loginname, username } }, function (err, resp, body) { resolve(JSON.parse(body)) }) }) } const hasRecord = async (loginname, username) => { const { data } = await db.collection("login_record").where({ loginname, username }).limit(1).get() return data.length ? data[0] : false } exports.main = async (event, context) => { const { loginname, username } = event const wxContext = cloud.getWXContext() const record = await hasRecord(loginname.toUpperCase(), username) if (record && record.openid != wxContext.OPENID) { return { success: false, msg: '该账号已与其他微信绑定,如需重置,请与工会管理员联系!' } } else if (record && record.openid == wxContext.OPENID) { const { code, data } = await getUserInfo(loginname, username) if (code == 0 && Object.keys(data).length != 0) { data.roles = data.roles ? data.roles.split(',') : [] await db.collection("login_record").doc(record._id).update({ data: { data } }) return { success: true, msg: '登录成功', data } } return { success: true, msg: '登录成功', data: record.data } } const { code, data } = await getUserInfo(loginname, username) if (code == 0 && Object.keys(data).length != 0) { data.roles = data.roles ? data.roles.split(',') : [] await db.collection("login_record").add({ data: { loginname: loginname.toUpperCase(), username: username, openid: wxContext.OPENID, data } }) return { success: true, msg: '登录成功', data } } return { success: false, msg: '如提示姓名与工号不匹配,请您检查是否输入正确或带有空格后再试,如有需要请联系管理员' } }