{"id":23409702,"url":"https://github.com/moshang-ax/lottery","last_synced_at":"2025-05-13T22:05:17.175Z","repository":{"id":38429169,"uuid":"168259404","full_name":"moshang-ax/lottery","owner":"moshang-ax","description":"🎉🌟✨🎈年会抽奖程序，基于 Express + Three.js的 3D 球体抽奖程序，奖品🧧🎁，文字，图片，抽奖规则均可配置，😜抽奖人员信息Excel一键导入😍，抽奖结果Excel导出😎，给你的抽奖活动带来全新酷炫体验🚀🚀🚀","archived":false,"fork":false,"pushed_at":"2025-03-02T03:21:12.000Z","size":10399,"stargazers_count":3777,"open_issues_count":27,"forks_count":899,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-04-29T13:56:39.164Z","etag":null,"topics":["lottery","lucky","lucky-wheel","luckydraw","nodejs","prizes","threejs"],"latest_commit_sha":null,"homepage":"https://moshang-ax.github.io/lottery/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moshang-ax.png","metadata":{"files":{"readme":"README-ZH_CN.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-30T01:38:03.000Z","updated_at":"2025-04-29T03:10:03.000Z","dependencies_parsed_at":"2024-01-13T17:57:59.354Z","dependency_job_id":"8d612345-3fdd-442e-bedb-8b09e5712f7f","html_url":"https://github.com/moshang-ax/lottery","commit_stats":null,"previous_names":["aras-ax/lottery","moshang-xc/lottery","moshang-ax/lottery"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moshang-ax%2Flottery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moshang-ax%2Flottery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moshang-ax%2Flottery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moshang-ax%2Flottery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moshang-ax","download_url":"https://codeload.github.com/moshang-ax/lottery/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254036817,"owners_count":22003653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["lottery","lucky","lucky-wheel","luckydraw","nodejs","prizes","threejs"],"created_at":"2024-12-22T16:12:33.943Z","updated_at":"2025-05-13T22:05:12.159Z","avatar_url":"https://github.com/moshang-ax.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# 抽奖程序\n\n年会抽奖程序，3D 球体抽奖，支持奖品信息配置，参与抽奖人员信息`Excel`导入，抽奖结果`Excel`导出\n\n如果该程序对你有帮助😎😎😎，希望给个⭐**star**⭐喔。😘😘😘😍🥰🎉🎈🎃\n\n\u003e 立即体验一下： [https://moshang-ax.github.io/lottery/](https://moshang-ax.github.io/lottery/)\n\n## 技术\n\n技术：Node + Express + Three.js\n\n后台通过`Express`实现\n\n前端抽奖界面通过`Three.js`实现 3D 抽奖球，引用了`Three.js`的官方 3D 示例\n\n## 功能描述：\n\n1. 可将抽奖结果进行保存实时下载到 excel 中🎉\n2. 已抽取人员不在参与抽取，抽中的人员不在现场可以重新抽取🎁\n3. 刷新或者关掉服务器，会保存当前已抽取的数据，不会进行数据重置，只有点击界面上的重置按钮，才能重置抽奖数据🧧\n4. 每次抽取的奖品数目可配置🎈\n5. 抽取完所有奖品后还可以继续抽取特别奖(例如：现在抽取红包，追加的奖品等)，此时默认一次抽取一个🧨\n\n## 预览\n\n![lottery.gif](https://raw.githubusercontent.com/moshang-xc/blog/master/share/lottery.gif)\n\n![index.jpg](https://raw.githubusercontent.com/moshang-xc/blog/master/share/index.jpg)\n\n![start.jpg](https://raw.githubusercontent.com/moshang-xc/blog/master/share/start.jpg)\n\n![end.jpg](https://raw.githubusercontent.com/moshang-xc/blog/master/share/end.jpg)\n\n## 安装\n\n```\ngit clone https://github.com/moshang-xc/lottery.git\n\ncd lottery\n\n# 服务端插件安装\ncd server\nnpm install\n\n# 前端插件安装\ncd ../product\nnpm install\n\n# 打包\nnpm run build\n\n# 运行\nnpm run serve\n\n# 开发调试\nnpm run dev\n\n```\n\n## 目录结构\n\n```\nLottery\n├── product\n│   ├── src\n│   │   ├── lottery\n│   │   │   └── index.js\n│   │   ├── lib\n│   │   ├── img\n│   │   ├── css\n│   │   └── data\n│   ├── package.json\n│   └── webpack.config.js\n├── server\n│   ├── config.js\n│   ├── server.js\n│   └── package.js\n```\n\n\u003e 1. product 为前端页面目录\n\u003e 2. package.josn web 项目配置文件\n\u003e 3. webpack.config.js 打包配置文件\n\u003e 4. server 为服务器目录\n\u003e 5. config 为奖品信息的配置文件\n\n## 配置信息\n\n### 抽奖用户信息配置\n\n抽奖用户信息在**`server/data/user.xlsx`**文件中，按文件格式进行填充，不能修改文件名和列头\n\n### 奖品信息配置\n\n奖品的配置信息填写在**server/config.js**文件中，不能修改文件名。\n\n**其中奖品 prizes 的配置描述如下：**\n\n| 参数  | 值类型 | 描述                                                         |\n| ----- | ------ | ------------------------------------------------------------ |\n| type  | Number | 奖品类型，唯一标识，0 是默认特别奖的占位符，其它奖品不可使用 |\n| count | Number | 奖品数量                                                     |\n| text  | String | 奖项名称                                                     |\n| title | String | 奖品描述                                                     |\n| img   | String | 奖品的图片地址，图片在**img**目录下                          |\n\n```js\n// 奖品信息，第一项为预留项不可修改，其他项可根据需要修改\nlet prizes = [{\n        type: 0,\n        count: 1000,\n        title: \"\",\n        text: \"特别奖\"\n    },\n    {\n        type: 1,\n        count: 2,\n        text: \"特等奖\",\n        title: \"神秘大礼\",\n        img: \"../img/secrit.jpg\"\n    },\n    {\n        type: 2,\n        count: 5,\n        text: \"一等奖\",\n        title: \"Mac Pro\",\n        img: \"../img/mbp.jpg\"\n    }\n    ...\n];\n```\n\n### 奖品每次抽取个数配置\n\n**EACH_COUNT**用于配置每次的抽奖个数，与 prizes 奖品一一对应，例如上面的奖品配置对应的抽奖个数配置如下：\n\n```js\nconst EACH_COUNT = [1, 1, 5];\n```\n\n如上配置，表示一次抽取的奖品个数顺序为：特别奖每次抽一个，特等奖每次抽一个，一等奖每次抽五个\n\n### 企业标识配置\n\n该标识用于显示在抽奖卡片上。\n\n```js\nconst COMPANY = \"MoShang\";\n```\n\n\n## Docker部署方案\n\n### 概述\n\n该项目现在支持使用Docker进行部署。Docker是一个轻量级的容器化平台，可以让您快速地部署、测试和运行应用程序。本文档将向您介绍如何使用Docker部署该项目。\n\n### 系统要求\n\n在您开始使用Docker部署该项目之前，您需要确保已经安装了以下软件：\n\n- Docker（请参阅Docker的官方文档以获取安装说明）\n- Docker Compose\n\n### 安装\n\n1. 下载并解压该项目的源代码。\n\n2. 进入解压后的项目目录。\n\n3. 执行以下命令以构建Docker镜像：\n\n   ```\n   ./build.sh [TAG]\n   ```\n\n   这将使用Dockerfile构建一个名为`lottery:[TAG]`的Docker镜像。如果未指定标签，则默认使用`latest`标签。\n\n4. 执行以下命令以在本地运行容器：\n\n   ```\n   ./dev.sh [TAG]\n   ```\n\n   这将启动容器并将应用程序部署在Docker容器中。您可以在本地进行测试，确保一切正常。请注意，容器内部的应用程序将会监听8888端口和443端口。\n\n5. 执行以下命令以将Docker镜像标记并推送到远程Docker仓库：\n\n   ```\n   ./tagpush.sh [TAG]\n   ```\n\n   这将为Docker镜像打上标签并将其推送到远程Docker仓库，如果要使用docker官方的hub请先在https://hub.docker.com/新建自己的repo，然后将文件中的用户名改为自己。请注意，`[TAG]`应替换为您要使用的标签名称。\n\n6. 确保有一个名为`docker-compose.yml`的文件，并添加以下内容：\n\n   ```\n   version: '3.8'\n   \n   volumes:\n     lottery_log:\n   \n   services:\n     lottery:\n       container_name: lottery\n       expose:\n         - 8888\n       ports:\n         - \"28458:8888\"\n         - \"443:443\"\n       volumes:\n         - \"lottery_log:/var/log\"\n       image: \"panda1024/lottery:[TAG]\" \n       restart: always\n   ```\n\n   请注意，`[TAG]`应替换为您推送到Docker仓库的镜像名称。\n\n7. 在服务器上的项目目录中运行以下命令以使用Docker Compose部署应用程序：\n\n```\n\tdocker-compose up -d\n```\n\n​\t\t这将启动一个Docker Compose堆栈，并将该项目部署在其中。请注意，此处将容器的8888端口和443端口映射\t\t到了服务器上的8888端口和443端口。如果您希望使用其他端口，请相应地更改`docker-compose.yml`文件。\n\n\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoshang-ax%2Flottery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoshang-ax%2Flottery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoshang-ax%2Flottery/lists"}