@@ -8,182 +8,169 @@ var fs = require('fs');
88var chalk = require ( 'chalk' ) ;
99module . exports = async function ( req , res , next ) {
1010 let IP = utils . getUserIp ( req ) ;
11+ let token = req . body . token ;
12+ //解析token
13+ if ( ! token ) {
14+ console . info (
15+ chalk . yellow ( IP + '参数有误!' )
16+ )
17+ res . send ( {
18+ code : 403 ,
19+ msg : 'token为空!'
20+ } ) ;
21+ return false ;
22+ }
23+ let result = await utils . tokenCheckAndEmail ( token ) . catch ( ( err ) => {
24+ throw err ;
25+ } ) ;
26+ if ( ! result ) {
27+ res . send ( {
28+ code : 403 ,
29+ msg : '账户信息已失效,请重新登录!'
30+ } ) ;
31+ console . info (
32+ chalk . yellow ( '查询结果token无效,IP为:' + IP )
33+ ) ;
34+ return false ;
35+ }
36+ let email = result . email ;
37+ console . info (
38+ chalk . green ( IP + '的邮箱解析结果为' + email )
39+ )
1140 console . info (
12- chalk . green ( req . body . email + '开始日常抽卡。IP为:' + IP )
41+ chalk . green ( email + '开始日常抽卡。IP为:' + IP )
1342 ) ;
14- if ( req . body . email ) {
15- var userEmail = req . body . email ;
16- var sel = Math . floor ( req . body . sel ) ;
17- //判断选择的卡牌编号是否有误
18- if ( isNaN ( sel ) || sel < 0 || sel > 2 ) {
19- res . send ( {
20- code : 0 ,
21- msg : '参数有误!'
22- } ) ;
23- console . info (
24- chalk . yellow ( req . body . email + '传参(sel)有误!IP为:' + IP )
25- ) ;
26- return false ;
27- }
28- //验证邮箱格式
29- if ( utils . emailCheck ( userEmail ) ) {
30- let params = { email : userEmail }
31- // document查询
32- let result = await userData . findUser ( params ) . catch ( ( err ) => {
33- res . send ( {
34- code : 0 ,
35- msg : '内部错误请联系管理员!'
36- } ) ;
37- console . error (
38- chalk . red ( '数据库查询错误!' )
39- ) ;
40- throw err ;
41- } )
42- //判断是否有该用户
43- if ( result ) {
44- if ( result . ban > 0 ) {
45- res . send ( {
46- code : 0 ,
47- msg : '该账户已被封禁!'
48- } ) ;
49- console . info (
50- chalk . yellow ( req . body . email + '已被封禁!IP为:' + IP )
51- ) ;
52- return false ;
53- }
54- let dailyCard = result . dailyCard ;
55- // 取消竞技点抽卡加成
56- let scoreChance = 0 ; //Math.floor(result.score/1000);
57- if ( isNaN ( scoreChance ) ) {
58- res . send ( {
59- code : 0 ,
60- msg : '内部错误请联系管理员!'
61- } ) ;
62- return false ;
63- }
64- let dailyCardTime = Math . round ( Number ( result . dailyCardTime ) * 1000 ) ;
65- let timeNow = Math . round ( new Date ( ) . getTime ( ) / 1000 ) ;
66- let myDailyChance = global . myAppConfig . dailyChance + scoreChance ;
67- if ( new Date ( timeNow * 1000 ) . toDateString ( ) === new Date ( dailyCardTime ) . toDateString ( ) ) { //如果是同天
68- if ( dailyCard >= myDailyChance ) {
69- res . send ( {
70- code : 3 ,
71- msg : '已经超过今天的抽卡次数了!'
72- } ) ;
73- console . info (
74- chalk . blue ( req . body . email + '超过每日抽卡限制。IP为:' + IP )
75- ) ;
76- return false ;
77- }
78- } else {
79- dailyCard = 0 ;
80- }
81- let packageId = req . body . packageId || 0 ;
82- // 抽卡三次
83- let cardIdArr = await cardUitls . chioseCard ( packageId , 3 ) ;
84- if ( ! cardIdArr ) {
85- res . send ( {
86- code : 0 ,
87- msg : '抽卡失败,请检查参数!'
88- } ) ;
89- return false ;
90- }
91- // 获取卡牌ID
92- let cardId = cardIdArr [ sel ] . cardId ;
93- if ( cardId === undefined || cardId === null ) {
94- res . send ( {
95- code : 0 ,
96- msg : '数据错误!'
97- } ) ;
98- return false ;
99- }
10043
101- let cardDataBase = { } ;
102- cardDataBase [ 'card.' + packageId + '.' + cardId ] = 1 ;
103- let emailmd5 = result . md5 ;
104- dailyCard = dailyCard + 1 ;
105- let filters = {
106- email : userEmail
107- }
108- let updataParams = {
109- dailyCard : dailyCard ,
110- $inc : cardDataBase ,
111- ip : IP ,
112- dailyCardTime : timeNow
113- }
114- await userData . updataUser ( filters , updataParams , true ) . catch ( ( err ) => {
115- res . send ( {
116- code : 0 ,
117- msg : '内部错误请联系管理员!'
118- } ) ;
119- console . error (
120- chalk . red ( '数据库更新错误!' )
121- ) ;
122- throw err ;
123- } )
124- console . info (
125- chalk . green ( '邮箱:' + userEmail + ',抽到卡牌:【' + cardId + '】! IP为:' + IP )
126- ) ;
127- let logObject = {
128- email : userEmail ,
129- md5 : md5 ( userEmail ) ,
130- nickName : result . nickName ,
131- type : 'dailyCard' ,
132- time : timeNow ,
133- data : {
134- cardId : cardId ,
135- title : cardIdArr [ sel ] . title ,
136- name : cardIdArr [ sel ] . name ,
137- star : cardIdArr [ sel ] . star ,
138- packageId : packageId
139- } ,
140- ip : IP
141- }
142- utils . writeLog ( logObject ) ;
143- let cardChoiseList = [ ]
144- for ( let i = 0 ; i < cardIdArr . length ; i ++ ) {
145- cardChoiseList . push ( cardIdArr [ i ] . cardId )
146- }
147- const userCard = result . card || { } ;
148- const userPackageCard = userCard [ packageId ] || { } ;
149- const userCardIdList = Object . keys ( userPackageCard ) ;
150- const userCardIdIndex = userCardIdList . indexOf ( cardId ) ;
151- res . send ( {
152- code : 1 ,
153- cardChoiseList : cardChoiseList ,
154- choiseIndex : sel ,
155- emailmd5 : emailmd5 ,
156- card : cardId ,
157- packageId : packageId ,
158- isNew : userCardIdIndex === - 1 ,
159- leftGetChance : myDailyChance - dailyCard ,
160- msg : 'ok'
161- } ) ;
162- } else {
163- res . send ( {
164- code : 2 ,
165- msg : '该邮箱未注册!'
166- } ) ;
167- console . info (
168- chalk . blue ( req . body . email + '并未注册。IP为:' + IP )
169- ) ;
170- }
171- } else {
44+ var sel = Math . floor ( req . body . sel ) ;
45+ //判断选择的卡牌编号是否有误
46+ if ( isNaN ( sel ) || sel < 0 || sel > 2 ) {
47+ res . send ( {
48+ code : 0 ,
49+ msg : '参数有误!'
50+ } ) ;
51+ console . info (
52+ chalk . yellow ( req . body . email + '传参(sel)有误!IP为:' + IP )
53+ ) ;
54+ return false ;
55+ }
56+
57+ if ( result . ban > 0 ) {
58+ res . send ( {
59+ code : 0 ,
60+ msg : '该账户已被封禁!'
61+ } ) ;
62+ console . info (
63+ chalk . yellow ( req . body . email + '已被封禁!IP为:' + IP )
64+ ) ;
65+ return false ;
66+ }
67+ let dailyCard = result . dailyCard ;
68+ // 取消竞技点抽卡加成
69+ let scoreChance = 0 ; //Math.floor(result.score/1000);
70+ if ( isNaN ( scoreChance ) ) {
71+ res . send ( {
72+ code : 0 ,
73+ msg : '内部错误请联系管理员!'
74+ } ) ;
75+ return false ;
76+ }
77+ let dailyCardTime = Math . round ( Number ( result . dailyCardTime ) * 1000 ) ;
78+ let timeNow = Math . round ( new Date ( ) . getTime ( ) / 1000 ) ;
79+ let myDailyChance = global . myAppConfig . dailyChance + scoreChance ;
80+ if ( new Date ( timeNow * 1000 ) . toDateString ( ) === new Date ( dailyCardTime ) . toDateString ( ) ) { //如果是同天
81+ if ( dailyCard >= myDailyChance ) {
17282 res . send ( {
173- code : 0 ,
174- msg : '邮箱地址格式有误!'
83+ code : 3 ,
84+ leftGetChance : 0 ,
85+ msg : '已经超过今天的抽卡次数了!'
17586 } ) ;
17687 console . info (
177- chalk . yellow ( '邮箱格式有误, IP为:' + IP )
88+ chalk . blue ( req . body . email + '超过每日抽卡限制。 IP为:' + IP )
17889 ) ;
90+ return false ;
17991 }
18092 } else {
93+ dailyCard = 0 ;
94+ }
95+ let packageId = req . body . packageId || 0 ;
96+ // 抽卡三次
97+ let cardIdArr = await cardUitls . chioseCard ( packageId , 3 ) ;
98+ if ( ! cardIdArr ) {
18199 res . send ( {
182100 code : 0 ,
183- msg : '邮箱地址不能为空 !'
101+ msg : '抽卡失败,请检查参数 !'
184102 } ) ;
185- console . info (
186- chalk . yellow ( '邮箱为空,IP为:' + IP )
103+ return false ;
104+ }
105+ // 获取卡牌ID
106+ let cardId = cardIdArr [ sel ] . cardId ;
107+ if ( cardId === undefined || cardId === null ) {
108+ res . send ( {
109+ code : 0 ,
110+ msg : '数据错误!'
111+ } ) ;
112+ return false ;
113+ }
114+
115+ let cardDataBase = { } ;
116+ cardDataBase [ 'card.' + packageId + '.' + cardId ] = 1 ;
117+ let emailmd5 = result . md5 ;
118+ dailyCard = dailyCard + 1 ;
119+ let filters = {
120+ email : email
121+ }
122+ let updataParams = {
123+ dailyCard : dailyCard ,
124+ $inc : cardDataBase ,
125+ ip : IP ,
126+ dailyCardTime : timeNow
127+ }
128+ await userData . updataUser ( filters , updataParams , true ) . catch ( ( err ) => {
129+ res . send ( {
130+ code : 0 ,
131+ msg : '内部错误请联系管理员!'
132+ } ) ;
133+ console . error (
134+ chalk . red ( '数据库更新错误!' )
187135 ) ;
136+ throw err ;
137+ } )
138+ console . info (
139+ chalk . green ( '邮箱:' + email + ',抽到卡牌:【' + cardId + '】! IP为:' + IP )
140+ ) ;
141+ let logObject = {
142+ email : email ,
143+ md5 : md5 ( email ) ,
144+ nickName : result . nickName ,
145+ type : 'dailyCard' ,
146+ time : timeNow ,
147+ data : {
148+ cardId : cardId ,
149+ title : cardIdArr [ sel ] . title ,
150+ name : cardIdArr [ sel ] . name ,
151+ star : cardIdArr [ sel ] . star ,
152+ packageId : packageId
153+ } ,
154+ ip : IP
155+ }
156+ utils . writeLog ( logObject ) ;
157+ let cardChoiseList = [ ]
158+ for ( let i = 0 ; i < cardIdArr . length ; i ++ ) {
159+ cardChoiseList . push ( cardIdArr [ i ] . cardId )
188160 }
161+ const userCard = result . card || { } ;
162+ const userPackageCard = userCard [ packageId ] || { } ;
163+ const userCardIdList = Object . keys ( userPackageCard ) ;
164+ const userCardIdIndex = userCardIdList . indexOf ( cardId ) ;
165+ res . send ( {
166+ code : 1 ,
167+ cardChoiseList : cardChoiseList ,
168+ choiseIndex : sel ,
169+ emailmd5 : emailmd5 ,
170+ card : cardId ,
171+ packageId : packageId ,
172+ isNew : userCardIdIndex === - 1 ,
173+ leftGetChance : myDailyChance - dailyCard ,
174+ msg : 'ok'
175+ } ) ;
189176}
0 commit comments