ソースを参照

修复一个账号再次获取mqtt的时候,deadline延长的问题

jevian ma(马作伟) 1 ヶ月 前
コミット
0cc4ea3aca
2 ファイル変更10 行追加11 行削除
  1. 7 1
      docs/mqtt插件侧README.md
  2. 3 10
      src/api/ability.rs

+ 7 - 1
docs/mqtt插件侧README.md

@@ -16,7 +16,7 @@ CREATE TABLE `user` (
   `pass` TEXT NOT NULL,
   `mode` INTEGER NOT NULL DEFAULT 0,
   `deadline` INTEGER NOT NULL DEFAULT 9223372036854775807,
-  UNIQUE(`clientid`, `user`, `pass`)
+  UNIQUE(`clientid`)
 );
 ```
 
@@ -70,6 +70,12 @@ CREATE TABLE `dev` (
   `DO5` INTEGER NOT NULL DEFAULT 0,
   `DO6` INTEGER NOT NULL DEFAULT 0,
   `DO7` INTEGER NOT NULL DEFAULT 0,
+  `BEEP` INTEGER NOT NULL DEFAULT 0,
+  `mqtthost` TEXT NOT NULL DEFAULT 'none',
+  `mqttclientid` TEXT NOT NULL DEFAULT 'none',
+  `mqttuser` TEXT NOT NULL DEFAULT 'none',
+  `mqttpass` TEXT NOT NULL DEFAULT 'none',
+  `mqttport` INTEGER NOT NULL DEFAULT 0,
   UNIQUE(`clientid`)
 );
 ```

+ 3 - 10
src/api/ability.rs

@@ -143,15 +143,8 @@ pub async fn get_mqtt(
         return Json(MqttBack{errcode: 3000, errmsg: Some("数据库异常: 获取用户mqtt-clientid失败".to_string()),mqttp:None,clientid:None,mqttu:None});
     };
     if let Some(d) = state.mq_detail{
-        match d.db_mq_user.execute("update user set user=?, pass=? where clientid=?", (mqtu.clone(),mqtp.clone(),mqid.clone())).await{
-            Ok(n) => {if n==0{
-                log(Warning, format!("update mqttuser failed: no row updated"));
-                if let Err(e)=d.db_mq_user.execute("insert into user(clientid,user,pass,deadline) values(?,?,?,unixepoch()+300)", (mqid.clone(),mqtu.clone(),mqtp.clone())).await{
-                    log(Warning, format!("insert mqttuser failed: {e}"));
-                } else {
-                    log(Debug, format!("insert mqttuser success"));
-                }
-            }}
+        match d.db_mq_user.execute("INSERT INTO user(clientid,user,pass,mode,deadline)VALUES(?,?,?,1,unixepoch()+300)ON CONFLICT(clientid)DO UPDATE SET user=excluded.user,pass=excluded.pass,mode=excluded.mode,deadline=excluded.deadline", (mqid.clone(),mqtu.clone(),mqtp.clone())).await{
+            Ok(_) => {}
             Err(e)=>{log(Warning, format!("fail to update mqttuser: {e}"));}
         }
     }
@@ -187,4 +180,4 @@ use tokio::io::{AsyncWriteExt};
         }
     }
     })
-}
+}