задний план
Сегодня, кто готовит, кто моет посуду, кто покупает овощи... А, Хозяин сказал использовать лотерею, так что у меня такая картина
Таким образом, есть проблема читерства (вспомните характеристики палки, кто нарисует первым, кто нарисует позже и т. д.), поэтому есть эта маленькая программа-лотерея (конечно, я управляю маленькой программой один, Я хочу обмануть, зависит от моего настроения)
Введение
Опыт сканирования кода
Служба данных, хранение
В этом проекте используется облачная разработка WeChat, а облачная база данных может объявлять набор лотерейных списков chouqianList (облачная разработка предоставляет разработчикам полную собственную облачную поддержку и поддержку службы WeChat, ослабляет концепцию серверной части, эксплуатации и обслуживания, не требует создания сервер, использует платформу для предоставления API для развития основного бизнеса, что может обеспечить быстрый запуск и итерацию)
Подготовка перед бегом
(1)Зарегистрируйте мини-программу WeChat, получить appid, заменить appid в project.config.json этого проекта
(2)Откройте облачную разработку апплета
Реализация
титульная страница
Сверху вниз на главной странице есть темы лотереи, варианты лотереи, инициация лотереи и обычная лотерея.Основная функция этой страницы - инициировать лотерею и сохранить содержимое лотереи в базе данных.
Советы по обзору WeChat
Чтобы решить эту проблему, добавьте контент для вызова этого метода (мини-программный API безопасности содержимого, который может вызываться облачной разработкой)
isCheckMsg: function (msg) {
return new Promise(function (n, s) {
wx.cloud.callFunction({
name: 'msg',
data: ({
text: msg
})
}).then(res => {
if (res.result.errCode === 87014) {
// 没通过
n(false)
} else {
// ("通过")
n(true)
}
});
});
},
случайный розыгрыш
// 递归随机返回抽签项
edchouqian() {
let that = this;
return new Promise(function (n, s) {
const db = wx.cloud.database()
// 查询当前用户所有的 chouqianList
db.collection('chouqianList').where({
_id: that.data.drawlotsId
}).get({
success: res => {
that.setData({
detail: res.data[0].detail,
});
let nullDetail = res.data[0].detail.filter(item => item.openid == "");//找出没有抽签的选项
let arrIndex = Math.floor((Math.random() * nullDetail.length));//从没有抽签的选项随机选择一个选项
let objindex = nullDetail[arrIndex].index;
n(objindex)
},
fail: err => {
wx.showToast({
icon: 'none',
title: '查询记录失败'
})
console.error('[数据库] [查询记录] 失败:', err);
s(err);
}
})
});
},
страница лотереи
Страница лотереи имеет функцию лотереи для отображения результатов лотереи. Основная функция этой страницы - запросить, была ли лотерея розыграна из базы данных, отобразить результаты лотереи, если лотерея была разыграна, и случайным образом назначить лотерею если лотерея не разыграна (или показать, что номер лотереи израсходован).
Повторяющаяся проблема с лотереей с функцией анти-встряски или троттлинга
Страница результатов лотереи
Страница результатов лотереи, показывающая весь персонал лотереи и результаты (результаты запрашиваются из базы данных в соответствии с идентификатором лотерейной таблицы)
Слишком далекоАдрес источника
Заключение:
Поскольку время публикации относительно короткое, страницы и функции необходимо постепенно улучшать, а выпущенные функции также нуждаются в улучшении.Я приветствую друзей-единомышленников по коду, чтобы они давали больше советов и обменивались мнениями.ヾ(❀╹◡╹)ノ~
Начальная обучающая группа 493671066, там много красивых женщин. Старый водитель быстро сел в машину, объяснять было поздно.
Авторские статьи Vue по теме
Контроль разрешений фоновой системы на основе Vue2.0
vue2.0 на основе скинов elementui (пользовательская тема)
Сводная информация о интерфейсной документации