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 } } } }