Browse Source

✨ feat: 乐跑增加对手机型号的模拟

Pchen. 2 months ago
parent
commit
2aa5cba66e

+ 2 - 0
apis/Lepao/Account/Admin/GetAccountList.js

@@ -73,6 +73,8 @@ class GetAccountList extends API {
                     l.state,
                     l.auto_day,
                     l.notes,
+                    l.deviceModel,
+                    l.userAgent,
                     l.target_count,
                     f.face_code,
                     f.state AS face_state,

+ 6 - 5
apis/Lepao/Account/UpdateAccount/UpdateAccountAndroidApp.js

@@ -18,11 +18,12 @@ class UpdateAccountAndroidApp extends API {
     }
 
     async onRequest(req, res) {
-        let { reqData, resData } = req.body
+        let { reqData, resData, userAgent, deviceModel } = req.body
 
-        if ([reqData, resData].some(value => value === '' || value === null || value === undefined))
+        if ([reqData, resData, userAgent, deviceModel].some(value => value === '' || value === null || value === undefined))
             return res.json({
-                ...BaseStdResponse.MISSING_PARAMETER
+                ...BaseStdResponse.MISSING_PARAMETER,
+                msg: '账号信息不完整,请稍后再试获联系客服处理'
             })
 
         try {
@@ -68,8 +69,8 @@ class UpdateAccountAndroidApp extends API {
                     msg: '该乐跑账号尚未在RunForge系统中添加,请先添加你的账户'
                 })
             const time = new Date().getTime()
-            let updateSql = 'UPDATE lepao_account SET uid = ?, token = ?, school_id = ?, name = ?, grade_id = ?, class_id = ?, sex = ?, academy_name = ?, update_time = ?, user_avatar = ?, state = 1 WHERE student_num = ?'
-            let updateRows = await db.query(updateSql, [uid, token, school_id, name, grade_id, class_id, sex, academy_name, time, user_avatar ?? 'https://lepao-cloud.xxoo365.top/view.php/25aa126dc406974ff3579a99a2c6501a.png', student_num])
+            let updateSql = 'UPDATE lepao_account SET uid = ?, token = ?, school_id = ?, name = ?, grade_id = ?, class_id = ?, sex = ?, academy_name = ?, update_time = ?, user_avatar = ?, state = 1, userAgent = ?, deviceModel = ? WHERE student_num = ?'
+            let updateRows = await db.query(updateSql, [uid, token, school_id, name, grade_id, class_id, sex, academy_name, time, user_avatar ?? 'https://lepao-cloud.xxoo365.top/view.php/25aa126dc406974ff3579a99a2c6501a.png', userAgent ?? '', deviceModel ?? '', student_num])
 
             if (updateRows && updateRows.affectedRows > 0) {
                 let msg

+ 12 - 5
lib/Lepao/Lepao.js

@@ -56,9 +56,9 @@ class Lepao {
         return randomPath.id
     }
 
-    async getRecord(uid, token, school_id, student_id) {
+    async getRecord(uid, token, school_id, student_id, userAgent) {
         try {
-            const reqData = { uid, token, school_id, student_id }
+            const reqData = { uid, token, school_id, student_id, userAgent }
             this.logger.info(`开始请求获取跑步次数 uid=${uid} student_id=${student_id}`)
             const recordUrl = this.runpy + '/get_record'
             let recordRes = await axios.post(recordUrl, reqData)
@@ -143,7 +143,12 @@ class Lepao {
                 run_end_time -= 18000
             }
 
-            const ossData = { uid, token, school_id, student_id: account, random_id: path_id, run_end_time }
+            let phoneSql = 'SELECT userAgent, deviceModel FROM lepao_account WHERE student_num = ?'
+            let phoneData = await db.query(phoneSql, [account])
+            let userAgent = phoneData && phoneData.length > 0 ? phoneData[0].userAgent : 'Mozilla/5.0 (Linux; Android 16; 2211133C Build/BP2A.250605.031.A3; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.180 Mobile Safari/537.36 XWEB/1380347 MMWEBSDK/20250202 MMWEBID/1020 wxwork/5.0.6.66174 MicroMessenger/8.0.28.48(0x28001c30) MiniProgramEnv/android Luggage/3.0.2.95ef3f83 NetType/5G Language/zh_CN ABI/arm64'
+            let deviceModel = phoneData && phoneData.length > 0 ? phoneData[0].deviceModel : '2211133C'
+
+            const ossData = { uid, token, school_id, student_id: account, random_id: path_id, run_end_time, userAgent }
 
             try {
                 const zoneRes = await axios.post(zoneUrl, ossData)
@@ -205,7 +210,9 @@ class Lepao {
                 random_id: path_id,
                 record_file: oss_path,
                 run_end_time,
-                point_data
+                point_data,
+                userAgent,
+                deviceModel
             }
 
             this.logger.info(`${account}乐跑请求参数构造完成:`)
@@ -230,7 +237,7 @@ class Lepao {
                 await this.addRecord(uuid, account, data.data, path_id, point_data)
 
                 // 获取剩余跑步次数
-                const recordData = await this.getRecord(uid, token, school_id, account)
+                const recordData = await this.getRecord(uid, token, school_id, account, userAgent)
                 this.logger.info(`${account}获取剩余跑步次数结果: ${JSON.stringify(recordData)}`)
 
                 let term_num = recordData?.term_num || 0