Skip to content

Commit 37c0464

Browse files
committed
Merge branch 'dev' of https://github.com/eeg1412/wikimoeCardByNodeJS into master
2 parents 48ac938 + daf8aeb commit 37c0464

28 files changed

+1448
-607
lines changed

server/api/searchCard.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,11 @@ module.exports = async function (req, res, next) {
5555
nickName: result.nickName,
5656
score: result.score,
5757
level: result.level,
58-
cardIndexCount: result.cardIndexCount
58+
cardIndexCount: result.cardIndexCount,
59+
deminingStarCount: result.deminingStarCount,
60+
UCC: result.UCC,
61+
guessCardCount: result.guessCardCount,
62+
questCount: result.questCount,
5963
});
6064
} else {
6165
res.send({

server/api/wssystem.js

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
var utils = require('../utils/utils')
2+
const _ = require('lodash')
3+
const validator = require('validator')
4+
exports.login = async function (token, socket) {
5+
let IP = ''
6+
if (socket.handshake.headers['x-forwarded-for'] != null) {
7+
IP = socket.handshake.headers['x-forwarded-for']
8+
} else {
9+
IP = socket.handshake.address
10+
}
11+
IP = IP.match(/\d+.\d+.\d+.\d+/)
12+
IP = IP ? IP.join('.') : 'No IP'
13+
let backData = {
14+
status: false,
15+
IP: IP,
16+
}
17+
if (token) {
18+
// 验证用户信息
19+
let result = await utils.tokenCheckAndEmail(token).catch((err) => {
20+
throw err
21+
})
22+
// 如果验证成功
23+
if (result) {
24+
backData = {
25+
status: true,
26+
userInfo: result,
27+
IP: IP,
28+
}
29+
}
30+
}
31+
return backData
32+
}
33+
exports.searchUser = async (socket, data) => {
34+
// 查找在线用户
35+
let page = 1
36+
if (data) {
37+
page = data.page || 1
38+
}
39+
const userDataCount = _.groupBy(global.onlinePlayer, (value) => {
40+
return value.email
41+
})
42+
if (!validator.isInt(page + '', { min: 1 })) {
43+
page = 1
44+
}
45+
const pagination = function (pageSize, currentPage, arr) {
46+
var skipNum = (currentPage - 1) * pageSize
47+
var newArr =
48+
skipNum + pageSize >= arr.length
49+
? arr.slice(skipNum, arr.length)
50+
: arr.slice(skipNum, skipNum + pageSize)
51+
return newArr
52+
}
53+
const pushBy = function (group) {
54+
var list = []
55+
group.forEach((item) => {
56+
list.push(item.device)
57+
})
58+
return list
59+
}
60+
let pageUser = _.map(userDataCount, (item) => {
61+
return {
62+
md5: item[0].md5,
63+
nickName: item[0].nickName,
64+
loginTime: item[0].loginTime,
65+
deviceList: pushBy(item),
66+
}
67+
})
68+
pageUser = pagination(5, page, pageUser)
69+
socket.emit('searchUserRes', {
70+
code: 900,
71+
pageUser: pageUser,
72+
userTotal: Object.keys(userDataCount).length,
73+
})
74+
}

server/app.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ global.demining = {
44
onlinePlayer: [],
55
loaing: true
66
};
7+
global.onlinePlayer = []
78
//全局矿场信息
89
global.MAX_INT32 = 2147483647;
910
global.MAX_INTJS = 9007199254740991;

server/bin/www

Lines changed: 75 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ let debug = require('debug')('wikimoecard:server')
88
let http = require('http')
99
let https = require('https')
1010
let demining = require('../api/demining')
11+
let wssystem = require('../api/wssystem')
1112
let fs = require('fs')
1213
const chalk = require('chalk')
1314
const cheerio = require('cheerio')
@@ -127,9 +128,16 @@ io.of('/wsdemining').on('connection', async (socket) => {
127128
socket.on('demining', (data) => {
128129
// console.log('deminging');
129130
// console.log(data);
130-
131-
// 处理挖矿逻辑
132-
demining.mine(socket, data)
131+
if (!_.isObject(data)) {
132+
socket.emit('demining', {
133+
code: 1,
134+
msg: '内部错误请联系管理员!',
135+
time: data.time,
136+
})
137+
} else {
138+
// 处理挖矿逻辑
139+
demining.mine(socket, data)
140+
}
133141
})
134142
socket.on('disconnect', function () {
135143
console.info(chalk.green(userEmail + '下线!'))
@@ -153,11 +161,72 @@ io.of('/wsdemining').on('connection', async (socket) => {
153161
socket.disconnect()
154162
}
155163
})
164+
// 系统websocket
165+
io.of('/wssystem').on('connection', async (socket) => {
166+
let token = socket.handshake.query.dt
167+
// console.log("dt",token);
168+
const userData = await wssystem.login(token, socket).catch((err) => {
169+
throw err
170+
})
171+
if (userData.status) {
172+
// 用户验证通过
173+
174+
const socketId = socket.id
175+
const userEmail = userData.userInfo.email
176+
177+
const UA = socket.request.headers['user-agent']
178+
const newPlayer = {
179+
email: userEmail,
180+
md5: userData.userInfo.md5,
181+
nickName: userData.userInfo.nickName,
182+
loginTime: Math.round(new Date().getTime() / 1000),
183+
device: UA,
184+
socketId: socketId,
185+
}
186+
global.onlinePlayer.push(newPlayer)
187+
console.info(chalk.green(userEmail + '登陆抽卡系统!IP为:' + userData.IP))
188+
// 发送在线人数
189+
const newUserDataCount = _.groupBy(
190+
global.onlinePlayer,
191+
(value) => {
192+
return value.email
193+
}
194+
)
195+
io.of('/wssystem').emit('userCount', {
196+
userCount: Object.keys(newUserDataCount).length,
197+
})
198+
socket.on('searchUser', (data) => {
199+
wssystem.searchUser(socket, data)
200+
})
201+
socket.on('checkTime', () => {
202+
socket.emit('getTime', new Date().getTime())
203+
})
204+
socket.on('disconnect', function () {
205+
console.info(chalk.green(userEmail + '下线抽卡系统!'))
206+
global.onlinePlayer = global.onlinePlayer.filter(
207+
(item) => item.socketId !== socketId
208+
)
209+
const newUserDataCount = _.groupBy(
210+
global.onlinePlayer,
211+
(value) => {
212+
return value.email
213+
}
214+
)
215+
io.of('/wssystem').emit('userCount', {
216+
userCount: Object.keys(newUserDataCount).length,
217+
})
218+
})
219+
} else {
220+
// 用户验证失败
221+
console.info(chalk.yellow(userData.IP + '登陆抽卡服务器失败,Token有误!'))
222+
socket.disconnect()
223+
}
224+
})
156225
/**
157226
* Normalize a port into a number, string, or false.
158227
*/
159228

160-
function normalizePort(val) {
229+
function normalizePort (val) {
161230
var port = parseInt(val, 10)
162231

163232
if (isNaN(port)) {
@@ -177,7 +246,7 @@ function normalizePort(val) {
177246
* Event listener for HTTP server "error" event.
178247
*/
179248

180-
function onError(error) {
249+
function onError (error) {
181250
if (error.syscall !== 'listen') {
182251
throw error
183252
}
@@ -203,7 +272,7 @@ function onError(error) {
203272
* Event listener for HTTP server "listening" event.
204273
*/
205274

206-
function onListening() {
275+
function onListening () {
207276
var addr = server.address()
208277
var bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port
209278
debug('Listening on ' + bind)

server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "wikimoecard",
3-
"version": "2.10.1",
3+
"version": "2.11.0",
44
"private": true,
55
"scripts": {
66
"start": "nodemon --delay 60 -e pem,key --watch bin ./bin/www",

server/public/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<!DOCTYPE html><html lang=zh><head><meta charset=UTF-8><title>抽卡系统加载中...</title><base href=/ ><meta name=viewport content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"><script src=/api/siteConfig.js></script><link rel=icon href=/favicon.ico type=image/x-icon><link href=/static/css/app.c9dd261.css rel=stylesheet></head><body><div id=app></div><div id=wm_index_footer></div><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.runtime.min.js></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/vuex.min.js></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/vue-router.min.js></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/axios.min.js></script><script type=text/javascript src=/static/js/manifest.cd4cf30.js></script><script type=text/javascript src=/static/js/vendor.f0d038d.js></script><script type=text/javascript src=/static/js/app.f48df77.js></script></body></html>
1+
<!DOCTYPE html><html lang=zh><head><meta charset=UTF-8><title>抽卡系统加载中...</title><base href=/ ><meta name=viewport content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"><script src=/api/siteConfig.js></script><link rel=icon href=/favicon.ico type=image/x-icon><link href=/static/css/app.2ffafec.css rel=stylesheet></head><body><div id=app></div><div id=wm_index_footer></div><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.runtime.min.js></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/vuex.min.js></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/vue-router.min.js></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/axios.min.js></script><script type=text/javascript src=/static/js/manifest.d9128e8.js></script><script type=text/javascript src=/static/js/vendor.548d0c0.js></script><script type=text/javascript src=/static/js/app.d49b7f8.js></script></body></html>

server/public/static/css/app.2ffafec.css

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/public/static/css/app.c9dd261.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

server/public/static/js/2.8668e1f.js

Lines changed: 0 additions & 12 deletions
This file was deleted.

server/public/static/js/2.eea044c.js

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)