Files
t/uniCloud-alipay/cloudfunctions/cms-vote/index.obj.js
T
2025-06-13 20:48:15 +08:00

169 lines
3.1 KiB
JavaScript

const { count } = require("console");
const db = uniCloud.database();
const _ =db.command;
module.exports = {
_before: function () { // 通用预处理器
},
async getVoteInfo(query) {
try {
let {
vote_id,
user_id
} = query;
// 用户选择
const user_res = await db.collection("cms-vote")
.where({
user_id: user_id,
vote_id: vote_id
})
.get();
// 获得总选择
const all_res = await db.collection("cms-vote-info")
.where({
vote_id: vote_id
})
.get();
return {
code: 200,
user_data: user_res.data[0],
all_data: all_res.data[0]
}
} catch(e) {
return {
code: 500,
msg: e.message
}
}
},
async add_vote(query) {
try {
let {
vote_id,
selectValue,
user_id,
type
} = query;
let t = await db.collection("cms-vote")
.where({
user_id: user_id,
vote_id: vote_id
})
.count();
if (t.total > 0) {
return {
code: 500,
msg: "已投票!"
}
} else {
await db.collection("cms-vote").add({
vote_id: vote_id,
selectValue: selectValue,
user_id: user_id,
type: type
});
const res = await db.collection("cms-vote-info")
.where({
vote_id: vote_id
})
.count();
if (res.total > 0) {
if (type === "单选(默认)") {
const voteInfo = await db.collection("cms-vote-info")
.where({
vote_id: vote_id
})
.get();
console.log(voteInfo)
let values = voteInfo.data[0].selectValue;
values[selectValue] = (values[selectValue] || 0) + 1;
await db.collection("cms-vote-info")
.where({
vote_id: vote_id
})
.update({
selectValue: values,
count: voteInfo.data[0].count + 1
});
} else {
const voteInfo = await db.collection("cms-vote-info")
.where({
vote_id: vote_id
})
.get();
console.log(voteInfo)
let values = voteInfo.data[0].selectValue;
for (let i = 0; i < selectValue.length ; i ++ ) {
values[selectValue[i]] = (values[selectValue[i]] || 0) + 1;
console.log((values[selectValue] || 0) + 1, values);
}
console.log(values);
await db.collection("cms-vote-info")
.where({
vote_id: vote_id
})
.update({
selectValue: values,
count: voteInfo.data[0].count + 1
});
}
} else {
if (type === "单选(默认)") {
await db.collection("cms-vote-info")
.add({
vote_id: vote_id,
selectValue: {
[selectValue]: 1
},
type: type,
count: 1
});
} else {
let values = {};
for (let i = 0 ; i < selectValue.length; i ++ ) {
values[selectValue[i]] = 1;
}
console.log(values);
await db.collection("cms-vote-info")
.add({
vote_id: vote_id,
selectValue: values,
type: type,
count: 1
});
}
}
return {
code: 200
}
}
} catch(e) {
return {
code: 500,
msg: e.message
}
}
}
}