1 Star 0 Fork 0

识君/yearlottery

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
index.html 31.43 KB
一键复制 编辑 原始数据 按行查看 历史
识君 提交于 2023-01-11 23:14 . first commit
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005
<!DOCTYPE html>
<html>
<head>
<meta name="screen-orientation" content="portrait">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0" />
<title>新年快乐 — 年会抽奖程序</title>
<meta name="keywords" content="抽奖H5网页,年会抽奖程序,炫酷的抽奖网页" />
<meta name="description" content="一个用于年会抽奖的炫酷网页!" />
<link href="img/logo.png" rel="icon">
<link href="https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/layui/2.5.7/css/layui.css" type="text/css"
rel="stylesheet" />
<style type="text/css">
/*全局大小*/
body,
html {
width: 100%;
height: 100%;
box-sizing: border-box;
margin: 0;
}
@keyframes audio-rotate-360 {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@-webkit-keyframes audio-rotate-360 {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.rui-audio-rotate-360 {
animation: audio-rotate-360 2s linear;
-webkit-animation: audio-rotate-360 2s linear;
}
.rui-audio-rotate-360 {
animation: audio-rotate-360 2s linear infinite;
-webkit-animation: audio-rotate-360 2s linear infinite;
}
.rui-animation-play-paused {
animation-play-state: paused;
-webkit-animation-play-state: paused;
/* Safari 和 Chrome */
}
/*背景样式*/
.wall {
width: 100%;
height: 100%;
box-sizing: border-box;
margin: 0;
background-image: url(img/tunian.jpg);
overflow: hidden;
background-color: #121936;
background-size: 100% 100%;
background-position: center center;
background-repeat: no-repeat;
}
/*显示抽奖结果的样式*/
.result {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-color: rgba(92, 92, 92, 0.25);
display: flex;
justify-content: center;
align-items: center;
background-image: url("img/alert.png");
background-size: 50%;
background-repeat: no-repeat;
background-position: center;
}
/*显示抽奖结果的样式*/
.result2 {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-image: url("img/alert3.png");
background-size: 100% 100%;
background-repeat: no-repeat;
display: flex;
justify-content: center;
align-items: center;
}
/*显示抽奖结果的样式*/
.result2 .list {
width: 85vw;
height: 70vh;
margin-top: 20vh;
display: flex;
}
/*显示抽奖结果的样式*/
.result2 .list ul {
display: flex;
flex-wrap: wrap;
align-items: center;
align-content: center;
justify-content: space-between;
}
/*显示抽奖结果的样式*/
.result2 .list ul li {
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
margin: 20px 10px;
background-image: url("img/bg.png");
background-size: 100% 100%;
}
/*显示抽奖结果的样式*/
.result2 .list ul li img {
width: 50%;
margin: 10px 25%;
}
/*显示抽奖结果的样式*/
.result2 .list ul li .title {
width: 100%;
margin-top: 15px;
color: #a90808;
font-size: 28px;
}
/*显示抽奖结果的样式*/
.result2 .list ul li .footer {
width: 80%;
background-image: url("img/bg2.png");
margin-bottom: 0;
background-size: 100% 100%;
color: #ffffff;
font-size: 25px;
padding: 3px;
}
/*结果内部元素的布局*/
.result .display {
width: 50%;
height: 50%;
display: flex;
align-items: center;
justify-content: center;
align-content: center;
flex-wrap: wrap;
}
/*奖品图片样式*/
.result .display img {
width: 25%;
margin-top: 20%;
margin-left: 39.5%;
margin-right: 40.5%;
}
/*中奖文字*/
.result .display .down {
margin-top: 3%;
margin-right: 0.5%;
}
/*奖品名字*/
.result .display .down .item1 {
text-align: center;
font-size: 25px;
font-weight: bold;
}
/*中奖人的样式*/
.result .display .down .item2 {
font-size: 25px;
margin-top: 20px;
font-weight: bold;
color: #fff100;
background-color: red;
padding: 10px 18px;
border-radius: 10px;
text-align: center;
}
/**/
button,
input,
optgroup,
select,
textarea {
color: inherit;
font: inherit;
margin: 0;
border: none;
}
button {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html input[type=button],
input[type=reset],
input[type=submit] {
-webkit-appearance: button;
cursor: pointer;
}
.pure-button {
display: inline-block;
zoom: 1;
line-height: normal;
white-space: nowrap;
vertical-align: middle;
text-align: center;
cursor: pointer;
-webkit-user-drag: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.pure-button {
font-family: inherit;
font-size: 100%;
padding: .5em 1em;
color: #444;
color: rgba(0, 0, 0, .8);
border: 0 rgba(0, 0, 0, 0);
background-color: #E6E6E6;
text-decoration: none;
border-radius: 2px;
position: relative;
z-index: 9999;
}
.pure-button:focus {
outline: 0
}
.pure-button-hover,
.pure-button:hover,
.pure-button:focus {
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#1a000000', GradientType=0);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(transparent), color-stop(40%, rgba(0, 0, 0, .05)), to(rgba(0, 0, 0, .1)));
background-image: -webkit-linear-gradient(transparent, rgba(0, 0, 0, .05) 40%, rgba(0, 0, 0, .1));
background-image: -moz-linear-gradient(top, rgba(0, 0, 0, .05) 0, rgba(0, 0, 0, .1));
background-image: -o-linear-gradient(transparent, rgba(0, 0, 0, .05) 40%, rgba(0, 0, 0, .1));
background-image: linear-gradient(transparent, rgba(0, 0, 0, .05) 40%, rgba(0, 0, 0, .1));
}
/*底部按钮的样式*/
.button-success,
.button-error,
.button-warning,
.button-secondary {
color: white;
border-radius: 4px;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
}
.button-success {
background: rgb(28, 184, 65);
}
.button-error {
background: rgb(202, 60, 60);
}
.button-warning {
background: rgb(223, 117, 20);
}
.button-secondary {
background: rgb(66, 184, 221);
}
.tools {
position: absolute;
bottom: 20px;
right: 20px;
text-align: center;
}
.tools .pure-button {
display: inline-block;
margin: 5px;
padding: 10px 0;
text-align: center;
width: 70px;
}
/*画布滤镜用于模糊显示*/
.mask {
-webkit-filter: blur(5px);
filter: blur(5px);
}
/*过渡效果*/
#main {
-webkit-transition: all 1s;
transition: all 1s;
}
/*vue 的淡出淡入特效*/
.fade-enter-active,
.fade-leave-active {
transition: opacity 1s;
}
.fade-enter,
.fade-leave-to
/* .fade-leave-active below version 2.1.8 */
{
opacity: 0;
}
[v-cloak] {
display: none;
}
/*过渡效果*/
.result ul {
margin-top: 35%;
margin-right: 2%;
display: block;
height: 50vh;
text-align: left;
}
.result ul span {
font-weight: bold;
margin-right: 25px;
font-size: 25px;
}
.result ul li {
display: block;
font-size: 24px;
margin-top: 3px;
}
/*对联*/
.result .couplet {
display: flex;
align-content: center;
align-items: center;
width: 100px;
height: 70vh;
background-color: #d90505;
border-radius: 1px;
box-shadow: rgba(255, 241, 0, 0.38) 1px 1px 10px 1px, rgba(255, 241, 0, 0.38) -1px -1px 10px 1px;
color: #fff100;
font-size: 70px;
}
</style>
<!--引入vue-->
<script src="https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/vue/2.6.14/vue.js"
type="application/javascript"></script>
</head>
<body>
<!-- 背景音乐 -->
<audio autoplay="" loop="" id="bgmusic">
<source src="./music/gxfc_ldh.mp3">
</audio>
<!-- 抽奖开始的音效 -->
<audio autoplay="" loop="" id="startmusic">
<source src="./music/start.mp3">
</audio>
<!-- 抽奖停止的音效 -->
<audio autoplay="" loop="" id="stopmusic">
<source src="./music/stop.mp3">
</audio>
<!--主容器,显示词云-->
<div id="main" class="wall">
</div>
<!--显示右下角的工具按钮-->
<div id="app" class="tools" v-cloak>
<img class="rui-animation-play-paused" id="music" title="背景音乐控制" src="./img/music.png" @click="stopOrGoon"
style="width: 35px;height: 35px;margin-right:10px; cursor: pointer;"> </img>
<button @click="toggle" class="pure-button" :class="running!=1?'button-error':'button-secondary'">
<!--显示抽奖结果时,显示继续-->
{{showResult ? "继续" : status[running]}}
</button>
<button class="pure-button button-success" @click="toggleFullScreen">{{fullState}}</button>
<!-- <button class="pure-button button-secondary" @click="showSetting">设置</button> -->
<!--显示抽奖结果-->
<button class="pure-button button-secondary" @click="showList">结果</button>
<button class="pure-button button-warning" @click="reset">重置</button>
<!--显示抽奖的结果-->
<transition name="fade">
<!--展示页面-->
<div id="result" class="result" v-if="running == 2">
<div class="display" v-if="!showResult">
<!--输出抽奖结果-->
<img :src="prizes[position].url" />
<div class="down">
<div class="item1">{{prizes[position].prize + " " + prizes[position].name}}</div>
<div class="item2">{{prizes[position].person}}</div>
</div>
</div>
</div>
<!--结果页面-->
<div class="result2" v-if="showResult">
<div class="list">
<!--循环输出结果-->
<ul>
<li v-for="(item,index) in prizesRverese" :key="index"
:style="{width: item.level == 1?'25%':item.level == 2?'20%':'12%'}">
<div class="title" :style="{fontSize:item.level == 1?'33px':'28px'}">{{item.name}}</div>
<img :src="item.url">
<div class="footer">{{item.person == "" ? item.prize : item.person}}</div>
</li>
</ul>
</div>
</div>
<!--设置页面-->
<div class="settings" v-if="showSettings">
我是设置页面
</div>
</transition>
</div>
<!--引入jq-->
<script src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/zepto/1.2.0/zepto.min.js"
type="application/javascript"></script>
<!--引入layui-->
<script src="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/layui/2.5.7/layui.all.js"
type="application/javascript"></script>
<!--引入词云插件-->
<script type="text/javascript" src="js/tagcanvas.js"></script>
<!--默认的名单-->
<script type="text/javascript" src="js/member.js"></script>
<script type="text/javascript">
/*页面加载完毕之后*/
(function () {
/*画布DOM*/
var canvas;
let temp = [];
member.forEach(function (item, index) {
temp.push({ name: item, index: index });
})
member = temp;
/*清除抽奖记录*/
localStorage.clear();
let bgaudio = document.getElementById('bgmusic')
bgaudio.pause();
let musicimg = document.getElementById('music')
musicimg.className = 'rui-animation-play-paused'
let startaudio = document.getElementById('startmusic')
startaudio.pause();
let stopaudio = document.getElementById('stopmusic')
stopaudio.pause();
/*监控窗口大小变化,及时重绘canvas*/
window.onresize = function () {
/*窗口大小发生变化*/
/*移除词云*/
$("#myCanvas").remove();
/*移除滤镜*/
$('#main').removeClass('mask');
/*重新创建词云*/
createCanvas(vm);
/*将抽奖状态归0*/
vm.running = 0;
}
/*从本地存储获取当前被选中过的人员名单*/
var choosed = JSON.parse(localStorage.getItem('choosed')) || {};
/*词云的旋转速度*/
var speed = function () {
return [0.2, 0.08];
};
/*创建名单列表*/
var createHTML = function (self) {
/*创建词云列表*/
var html = ['<ul>'];
/*遍历存储好的人员名单*/
let max = member.length;
member.forEach(function (item, index) {
item.index = index;
/* if(index == 2){
/!*写入不同的奖品图片*!/
if(self.currentLevel == 0){
html.push('<li><a href="#"><img style="width: 50px" src="img/1.jpg"/></a></li>');
}
}
if(index == Math.ceil(max/2)){
/!*写入不同的奖品图片*!/
if(self.currentLevel <= 2 && self.currentLevel>=0) {
html.push('<li><a href="#"><img style="width: 50px" src="img/2.jpg"/></a></li>');
}
}*/
/* if(index == (max-2)){
/!*写入不同的奖品图片*!/
if(self.currentLevel <= 3 && self.currentLevel>=0) {
html.push('<li><a href="#"><img style="width: 50px" src="img/3.jpg"/></a></li>');
}
}*/
/*如何已经被抽奖抽中了,显示黄色的名字*/
console.log(!choosed[item.name]);
if (!choosed[item.name]) {
html.push('<li><a href="#">' + item.name + '</a></li>');
}
});
html.push('</ul>');
return html.join('');
};
/*创建并重绘画布*/
var createCanvas = function (self) {
/*创建画布*/
canvas = document.createElement('canvas');
/*设置好ID*/
canvas.id = 'myCanvas';
/*设置画布的大小*/
canvas.width = document.body.offsetWidth;
/*设置画布的高度*/
canvas.height = document.body.offsetHeight;
/*将画布添加到网页渲染*/
document.getElementById('main').appendChild(canvas);
/*设置画布的内部html*/
canvas.innerHTML = createHTML(self);
/*词云开始绘制*/
/*第一个参数是画布的dom
* 第二个参数是 词云的列表dom(ul、li),如果列表是直接插入canvas 的innerhtml则无需指定
* */
TagCanvas.Start('myCanvas', '', {
textColour: "#FFD700",
initial: speed(),
textHeight: 42,
zoom: 1.05,
dragControl: true
});
}
/*
* @抽奖算法
*
* @第一步:通过过滤(filter)把中过奖的人排除
* @第二步:遍历所有剩下的名字,随机生成一个分数对象。与代表每个人的对象合并
* @第三步:从0开始,截取指定的抽奖数量的元素
* @第四步:标记被抽中的人员,改变其显示的颜色。
*
* @最后,将被抽中的人员名单对象,json序列化存入localstorage对象
* */
var lottery = function (count) {
/*获取画布内a标签*/
var list = canvas.getElementsByTagName('a');
var color = 'yellow';
var ret = member
/*过滤成员,如果没有在已被抽中的名单内,则返回该元素组成新数组*/
.filter(function (m, index) {
/*添加索引*/
m.index = index;
return !choosed[m.name];
})
/*遍历元素进行处理*/
/*m代表单个元素*/
.map(function (m) {
/*m是一个对象*/
/*合并两个对象*/
let ob = Object.assign({
score: Math.random()
}, m);
/*作为新元素*/
return ob;
})
/*排序*/
.sort(function (a, b) {
return a.score - b.score;
})
/*截取数组*/
.slice(0, count)
/*遍历循环元素*/
.map(function (m) {
/*新增一个被抽中的员工*/
choosed[m.name] = 1;
/*重新合并*/
return m.name;
});
/*更新被抽中过的名单*/
localStorage.setItem('choosed', JSON.stringify(choosed));
return ret;
};
/*实例化vue*/
let vm = new Vue({
/*挂载*/
el: '#app',
/*vue的数据*/
data: {
/*默认的抽奖人数*/
selected: 1,
/*是否正在抽奖*/
running: 0,
fullState: "全屏",
/*抽奖步骤*/
status: ["开始抽奖", "停!", "继续抽奖"],
/*抽奖奖品和数量*/
/* 奖品名、级别、级别、图片、中奖人*/
prizes: [
{
name: "幸运奖", prize: "", level: 5, "url": "img/prize/common.png", person: ""
},
{
name: "幸运奖", prize: "", level: 5, "url": "img/prize/common.png", person: ""
},
{
name: "幸运奖", prize: "", level: 5, "url": "img/prize/common.png", person: ""
},
{
name: "幸运奖", prize: "", level: 5, "url": "img/prize/common.png", person: ""
},
{
name: "幸运奖", prize: "", level: 5, "url": "img/prize/common.png", person: ""
},
{
name: "三等奖", prize: "", level: 4, "url": "img/prize/common.png", person: ""
},
{
name: "三等奖", prize: "", level: 4, "url": "img/prize/common.png", person: ""
},
{
name: "二等奖", prize: "", level: 3, "url": "img/prize/common.png", person: ""
},
{
name: "一等奖", prize: "", level: 2, "url": "img/prize/common.png", person: ""
},
{
name: "特等奖", prize: "", level: 1, "url": "img/prize/common.png", person: ""
}
],
/*正在抽第几个奖*/
position: 0,
/*是否展示抽奖信息*/
showResult: false,
showSettings: false,
},
/*生命周期-挂载完毕*/
computed: {
/*奖品列表*/
prizesRverese: function () {
let temp = [];
for (let i = this.prizes.length - 1; i >= 0; i--) {
temp.push(this.prizes[i])
}
return temp;
}
},
mounted() {
/*vue实例创建完毕,开始创建词云*/
createCanvas(this);
/*将layer作为全局对象*/
layui.use(["layer"], function () {
window.layer = layui.layer;
});
},
methods: {
/*重置所有中奖记录
* */
reset: function () {
/*如果不是待抽奖状态*/
if (this.running != 0) {
return;
}
let index = layer.confirm('确定要重置么?所有之前的抽奖历史将被清除!', function () {
location.reload();
});
},
toggle: function () {
if (this.position >= this.prizes.length) {
/*所有奖品抽完了,当前奖品等级0*/
this.running = 0;
layer.msg("所有奖品都抽完了!");
return;
}
/*判断是否正在抽奖*/
/*是否展示了抽奖结果*/
if (this.showResult) {
this.showResult = !this.showResult;
/*进入待抽奖的状态*/
this.running = 0;
$('#main').removeClass('mask');
return;
}
/*如果正在抽奖*/
if (this.running == 1) {
/*将词云的速度转换为正常速度*/
TagCanvas.SetSpeed('myCanvas', speed());
/*随机生成抽奖名单*/
var ret = lottery(this.selected);
/*如果所有人都被抽中了,提示无可抽奖人员*/
if (ret.length === 0) {
layer.msg("所有人都中奖了!");
this.running = 0;
return;
} else {
$('#main').addClass('mask');
/*显示抽奖结果*/
/*$('#result').find(".item2").text(ret[0]);
$('#result').fadeIn();
*/
let level = "";
/*判断当前的奖品等级*/
switch (this.prizes[this.position].level) {
case 1:
level = "一等奖";
break;
case 2:
level = "二等奖";
break;
case 3:
level = "三等奖";
break;
default:
}
/*中奖信息*/
this.prizes[this.position].person = ret[0];
/*重新加载人员名单*/
/*移除词云*/
$("#myCanvas").remove();
/*重新创建词云*/
createCanvas(this);
/*记录中奖时间和名单到本地*/
localStorage.setItem(new Date().toString(), ret[0]);
}
this.running = 2;
let bgaudio = document.getElementById('bgmusic')
bgaudio.pause();
let musicimg = document.getElementById('music')
musicimg.className = 'rui-animation-play-paused'
let startaudio = document.getElementById('startmusic')
startaudio.pause();
let stopaudio = document.getElementById('stopmusic')
stopaudio.play();
setTimeout(() => {
stopaudio.pause();
stopaudio.currentTime = 0
}, 1500)
/*进入中奖结果公式状态*/
} else if (this.running == 2) {
/*隐藏滤镜*/
$('#main').removeClass('mask');
/*进入待抽奖的状态*/
this.running = 0;
this.position++; //下一个待抽奖品
} else {
let bgaudio = document.getElementById('bgmusic')
bgaudio.pause();
let musicimg = document.getElementById('music')
musicimg.className = 'rui-animation-play-paused'
let startaudio = document.getElementById('startmusic')
startaudio.play();
/*加快词云的旋转速度*/
TagCanvas.SetSpeed('myCanvas', [3, 1]);
/*进入抽奖的状态*/
this.running = 1;
}
},
/*全屏切换*/
toggleFullScreen: function () {
/*如果不是待抽奖状态*/
if (this.running != 0) {
return;
}
/*是否处于全屏*/
if (!document.fullscreenElement) {
this.fullState = "正常";
document.documentElement.requestFullscreen();
} else {
if (document.exitFullscreen) {
this.fullState = "全屏";
document.exitFullscreen();
}
}
},
/*显示中奖名单*/
showList: function () {
/*如果正在抽奖*/
if (this.running == 1) {
return;
}
/*进入待抽奖的状态*/
this.running = 0;
if (localStorage.getItem('choosed')) {
let nowPosition = Object.keys(JSON.parse(localStorage.getItem('choosed'))).length
this.position = nowPosition
}
if (this.showResult) {
$('#main').removeClass('mask');
} else {
$('#main').addClass('mask');
}
/*改变显示的状态*/
this.showResult = !this.showResult;
},
// 音乐暂停与播放
stopOrGoon: function (event) {
let bgaudio = document.getElementById('bgmusic')
if (event.target.className.indexOf('rui-animation-play-paused') > -1) {
event.target.className = 'rui-audio-rotate-360';
bgaudio.play()
} else {
event.target.className = 'rui-audio-rotate-360 rui-animation-play-paused';
bgaudio.pause();
}
}
}
});
})();
</script>
</body>
</html>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ssy_kr/yearlottery.git
git@gitee.com:ssy_kr/yearlottery.git
ssy_kr
yearlottery
yearlottery
master

搜索帮助