Files
fitness_walk_nwnu/dist/dev/mp-weixin/cloudfunctions/login/index.js
T
2026-09-08 20:28:54 +08:00

112 lines
2.3 KiB
JavaScript

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: '如提示姓名与工号不匹配,请您检查是否输入正确或带有空格后再试,如有需要请联系管理员'
}
}