Move to Xorm [1/N]

Signed-off-by: Yuan Si <do4suki@gmail.com>
This commit is contained in:
2023-04-12 00:52:18 +08:00
parent 93cac9e6f6
commit fe1e012127
15 changed files with 753 additions and 203 deletions
+31 -36
View File
@@ -1,7 +1,6 @@
package handler
import (
"database/sql"
"encoding/base64"
"encoding/json"
"fmt"
@@ -222,19 +221,13 @@ func LoginAutoHandler(ctx *gin.Context) {
return
}
db, err := sql.Open("sqlite3", "assets/account.db")
stmt, err := UserEng.DB().Prepare("SELECT userid,ticket AS ct FROM users WHERE autokey = ?")
CheckErr(err)
defer db.Close()
defer stmt.Close()
stmt, err := db.Prepare("SELECT userid,ticket AS ct FROM users WHERE autokey = ?")
CheckErr(err)
rows, err := stmt.Query(autoKey)
CheckErr(err)
var userid, ticket string
for rows.Next() {
err = rows.Scan(&userid, &ticket)
CheckErr(err)
}
err = stmt.QueryRow(autoKey).Scan(&userid, &ticket)
CheckErr(err)
var resp string
if userid != "" {
@@ -320,62 +313,62 @@ func AccountLoginHandler(ctx *gin.Context) {
// "userid" INTEGER,
// "key" INTEGER
// );`
db, err := sql.Open("sqlite3", "assets/account.db")
stmt, err := UserEng.DB().Prepare("SELECT password,autokey,ticket,userid FROM users WHERE phone = ?")
CheckErr(err)
defer db.Close()
defer stmt.Close()
stmt, err := db.Prepare("SELECT password,autokey,ticket,userid FROM users WHERE phone = ?")
CheckErr(err)
rows, err := stmt.Query(phone)
CheckErr(err)
var pass, autokey, ticket, userid string
for rows.Next() {
err = rows.Scan(&pass, &autokey, &ticket, &userid)
CheckErr(err)
}
err = stmt.QueryRow(phone).Scan(&pass, &autokey, &ticket, &userid)
CheckErr(err)
loginResp := LoginResp{}
loginCode := 0
loginMsg := "ok"
loginTime := time.Now().Unix()
if pass == "" {
// 未注册 - 自动注册
trans, err := db.Begin()
if err != nil {
trans.Rollback()
session := UserEng.NewSession()
defer session.Close()
if err = session.Begin(); err != nil {
session.Rollback()
panic(err)
}
pass = openssl.Md5ToString(password)
autokey = "AUTO" + strings.ToUpper(utils.RandomStr(32))
userid = strconv.Itoa(int(loginTime))
ticket = "9999999" + userid + userid
stmt, err = trans.Prepare("INSERT INTO users(phone,password,autokey,ticket,userid,last_login_time) VALUES (?,?,?,?,?,?)")
userStmt, err := session.DB().Prepare("INSERT INTO users(phone,password,autokey,ticket,userid,last_login_time) VALUES (?,?,?,?,?,?)")
if err != nil {
trans.Rollback()
session.Rollback()
panic(err)
}
_, err = stmt.Exec(phone, pass, autokey, ticket, userid, loginTime)
defer userStmt.Close()
_, err = userStmt.Exec(phone, pass, autokey, ticket, userid, loginTime)
if err != nil {
trans.Rollback()
session.Rollback()
panic(err)
}
// id, _ := res.LastInsertId()
// fmt.Println("LastInsertId:", id)
stmt, err = trans.Prepare("INSERT INTO user_key(userid,key) VALUES(?,?)")
keyStmt, err := session.DB().Prepare("INSERT INTO user_key(userid,key) VALUES(?,?)")
if err != nil {
trans.Rollback()
session.Rollback()
panic(err)
}
// 方便起见初始化 userid 和 key 一样
// 注意:user_key 表中的 key 是上文生成的用于登录的 userid,而 userid 则是用于 Authorize Token 生成用的
_, err = stmt.Exec(userid, userid)
_, err = keyStmt.Exec(userid, userid)
if err != nil {
trans.Rollback()
session.Rollback()
panic(err)
}
if err = trans.Commit(); err != nil {
trans.Rollback()
if err = session.Commit(); err != nil {
session.Rollback()
panic(err)
}
@@ -401,9 +394,11 @@ func AccountLoginHandler(ctx *gin.Context) {
loginResp.Userid = userid // 实际登录用的账号
// 更新信息
stmt, err = db.Prepare("UPDATE users SET autokey=?,ticket=?,last_login_time=? WHERE userid=?")
userStmt, err := UserEng.DB().Prepare("UPDATE users SET autokey=?,ticket=?,last_login_time=? WHERE userid=?")
CheckErr(err)
_, err := stmt.Exec(autokey, ticket, loginTime, userid)
defer userStmt.Close()
_, err = userStmt.Exec(autokey, ticket, loginTime, userid)
CheckErr(err)
// aff, _ := res.RowsAffected()
// fmt.Println("RowsAffected:", aff)