Browse Source

修复了部分bug

Pchen. 11 months ago
parent
commit
5b98c49ba3
3 changed files with 43 additions and 20 deletions
  1. 36 12
      apis/Lepao/AddAccount.js
  2. 1 1
      apis/User/BindEmail.js
  3. 6 7
      lib/Lepao/Lepao.js

+ 36 - 12
apis/Lepao/AddAccount.js

@@ -12,9 +12,9 @@ class AddAccount extends API {
     }
     }
 
 
     async onRequest(req, res) {
     async onRequest(req, res) {
-        let { uuid, session, student_num, name, email, id, area, max_distance, min_distance } = req.body
+        let { uuid, session, student_num, email, id, area, max_distance, min_distance } = req.body
 
 
-        if ([uuid, session, student_num, name, email].some(value => value === '' || value === null || value === undefined))
+        if ([uuid, session, student_num, email].some(value => value === '' || value === null || value === undefined))
             return res.json({
             return res.json({
                 ...BaseStdResponse.MISSING_PARAMETER,
                 ...BaseStdResponse.MISSING_PARAMETER,
                 endpoint: 1513126
                 endpoint: 1513126
@@ -25,18 +25,42 @@ class AddAccount extends API {
                 ...BaseStdResponse.ACCESS_DENIED
                 ...BaseStdResponse.ACCESS_DENIED
             })
             })
 
 
+        // 判断是否重复注册
+        if (!id) {
+            let countSql = 'SELECT create_user FROM lepao_account WHERE student_num = ?'
+            let countRows = await db.query(countSql, [student_num])
+
+            if (!countRows)
+                return res.json({ ...BaseStdResponse.ERR, msg: '添加乐跑账号失败!数据库错误' })
+            if (countRows.length !== 0) {
+                if (countRows[0].create_user !== uuid)
+                    return res.json({ ...BaseStdResponse.ERR, msg: '该乐跑账号已被其他用户绑定,请联系客服解绑' })
+                return res.json({ ...BaseStdResponse.ERR, msg: '该乐跑账号已添加' })
+            }
+
+        }
+
         // 判断用户是否用了会员权益
         // 判断用户是否用了会员权益
         let userSql = 'SELECT vip FROM users WHERE uuid = ?'
         let userSql = 'SELECT vip FROM users WHERE uuid = ?'
         let userData = await db.query(userSql, [uuid])
         let userData = await db.query(userSql, [uuid])
-        if(!userData || userData.length !== 1)
-            return res.json({ ...BaseStdResponse.ERR,  msg: '添加乐跑账号失败!数据库错误' })
+        if (!userData || userData.length !== 1)
+            return res.json({ ...BaseStdResponse.ERR, msg: '添加乐跑账号失败!数据库错误' })
+
+        if (userData[0].vip !== 1) {
+            // 限制账号个数
+            let numSql = 'SELECT COUNT(*) AS num FROM lepao_account WHERE create_user = ?'
+            let numRows = await db.query(numSql, [uuid])
+            if(!numRows)
+                return res.json({ ...BaseStdResponse.ERR, msg: '添加乐跑账号失败!数据库错误' })
+            if(numRows[0].num >= 6)
+                return res.json({...BaseStdResponse.NOTVIP, msg: '非VIP用户最多只能添加6个乐跑账号,请先开通VIP'})
 
 
-        if(userData[0].vip !== 1) {
-            // 占位 限制账号个数
             // if(min_distance != 2.00 || max_distance != 4.00)
             // if(min_distance != 2.00 || max_distance != 4.00)
             //     return res.json({ ...BaseStdResponse.NOTVIP,  msg: '仅VIP用户可设置跑步距离区间' })
             //     return res.json({ ...BaseStdResponse.NOTVIP,  msg: '仅VIP用户可设置跑步距离区间' })
-            if(area != '')
-                return res.json({ ...BaseStdResponse.NOTVIP,  msg: '仅VIP用户可指定跑区' })
+
+            // 限制跑区
+            if (area != '')
+                return res.json({ ...BaseStdResponse.NOTVIP, msg: '仅VIP用户可指定跑区' })
         }
         }
 
 
         const time = new Date().getTime()
         const time = new Date().getTime()
@@ -44,11 +68,11 @@ class AddAccount extends API {
         let sql, r
         let sql, r
 
 
         if (!id) {
         if (!id) {
-            sql = 'INSERT INTO lepao_account (student_num, name, email, area, create_user, create_time) VALUES (?, ?, ?, ?, ?, ?)'
-            r = await db.query(sql, [student_num, name, email, area, uuid, time])
+            sql = 'INSERT INTO lepao_account (student_num, email, area, create_user, create_time) VALUES (?, ?, ?, ?, ?)'
+            r = await db.query(sql, [student_num, email, area, uuid, time])
         } else {
         } else {
-            sql = 'UPDATE lepao_account SET student_num = ?, name = ?, email = ?, area = ?,  update_time = ? WHERE id = ?'
-            r = await db.query(sql, [student_num, name, email, area, time, id])
+            sql = 'UPDATE lepao_account SET student_num = ?, email = ?, area = ?,  update_time = ? WHERE id = ?'
+            r = await db.query(sql, [student_num, email, area, time, id])
         }
         }
 
 
         try {
         try {

+ 1 - 1
apis/User/BindEmail.js

@@ -31,7 +31,7 @@ class BindEmail extends API {
 
 
 
 
         const VerifyCode = await Redis.get(`email:${email}`);
         const VerifyCode = await Redis.get(`email:${email}`);
-        if (!VerifyCode || VerifyCode != code)
+        if (!VerifyCode || VerifyCode != code.toLowerCase())
             return res.json({
             return res.json({
                 ...BaseStdResponse.SMS_CHECK_FAIL,
                 ...BaseStdResponse.SMS_CHECK_FAIL,
                 msg: '邮箱验证码输入错误或已过期'
                 msg: '邮箱验证码输入错误或已过期'

+ 6 - 7
lib/Lepao/Lepao.js

@@ -14,19 +14,17 @@ class Lepao {
     async getPath(account, vip) {
     async getPath(account, vip) {
         const accountSql = 'SELECT area, max_distance, min_distance FROM lepao_account WHERE student_num = ?'
         const accountSql = 'SELECT area, max_distance, min_distance FROM lepao_account WHERE student_num = ?'
         const rows = await db.query(accountSql, [account])
         const rows = await db.query(accountSql, [account])
-        if (!rows || rows.length !== 1) {
+        if (!rows || rows.length === 0) {
             throw new Error('无法获取账号数据')
             throw new Error('无法获取账号数据')
         }
         }
 
 
         const { area, max_distance, min_distance } = rows[0]
         const { area, max_distance, min_distance } = rows[0]
         const max = Number(max_distance) || 4.00
         const max = Number(max_distance) || 4.00
-        const min = Number(min_distance) || 1.60
+        const min = Number(min_distance) || 2.00
 
 
         if (vip !== 1) {
         if (vip !== 1) {
             if (area) throw new Error('指定乐跑跑区为 VIP 专用功能,请先开通 VIP')
             if (area) throw new Error('指定乐跑跑区为 VIP 专用功能,请先开通 VIP')
-            if (max !== 4.00 || min !== 1.60) {
-                throw new Error('指定乐跑距离区间为 VIP 专用功能,请先开通 VIP')
-            }
+            if (max !== 4.00 || min !== 2.00 ) throw new Error('指定乐跑距离区间为 VIP 专用功能,请先开通 VIP')
         }
         }
 
 
         let pathSql = 'SELECT id FROM path_data WHERE distance < ? AND distance > ?'
         let pathSql = 'SELECT id FROM path_data WHERE distance < ? AND distance > ?'
@@ -105,6 +103,7 @@ class Lepao {
             let run_end_time = Math.floor(Date.now() / 1000)
             let run_end_time = Math.floor(Date.now() / 1000)
             let hour = new Date().getHours()
             let hour = new Date().getHours()
             if (hour >= 22) run_end_time -= 18000
             if (hour >= 22) run_end_time -= 18000
+            else if (hour < 5) run_end_time -= 43920
 
 
             const lepaoData = {
             const lepaoData = {
                 uid,
                 uid,
@@ -163,7 +162,7 @@ class Lepao {
         try {
         try {
             const emailSql = 'SELECT name, email FROM lepao_account WHERE student_num = ?'
             const emailSql = 'SELECT name, email FROM lepao_account WHERE student_num = ?'
             const rows = await db.query(emailSql, [account])
             const rows = await db.query(emailSql, [account])
-            if (!rows || rows.length !== 1) {
+            if (!rows || rows.length === 0) {
                 throw new Error('查找用户邮箱失败')
                 throw new Error('查找用户邮箱失败')
             }
             }
 
 
@@ -183,7 +182,7 @@ class Lepao {
         try {
         try {
             const emailSql = 'SELECT name, email FROM lepao_account WHERE student_num = ?'
             const emailSql = 'SELECT name, email FROM lepao_account WHERE student_num = ?'
             const rows = await db.query(emailSql, [account])
             const rows = await db.query(emailSql, [account])
-            if (!rows || rows.length !== 1) {
+            if (!rows || rows.length == 0) {
                 throw new Error('查找用户邮箱失败')
                 throw new Error('查找用户邮箱失败')
             }
             }