feat: finalize Go backend migration and deployment cutover

This commit is contained in:
sagit
2026-02-07 11:03:12 +00:00
parent f9bc165c16
commit b2407c3442
21 changed files with 1813 additions and 140 deletions
+47 -1
View File
@@ -56,7 +56,7 @@ func (h *Handler) userCreate(w http.ResponseWriter, r *http.Request) {
num := asInt(req["num"], 10)
expTime := asInt64(req["expTime"], time.Now().Add(365*24*time.Hour).UnixMilli())
flowResetTime := asInt64(req["flowResetTime"], 1)
roleID := asInt(req["roleId"], asInt(req["role_id"], 1))
roleID := 1
now := time.Now().UnixMilli()
_, err := db.Exec(`
@@ -97,6 +97,20 @@ func (h *Handler) userUpdate(w http.ResponseWriter, r *http.Request) {
return
}
var roleID int
if err := db.QueryRow(`SELECT role_id FROM user WHERE id = ?`, id).Scan(&roleID); err != nil {
if err == sql.ErrNoRows {
response.WriteJSON(w, response.ErrDefault("用户不存在"))
return
}
response.WriteJSON(w, response.Err(-2, err.Error()))
return
}
if roleID == 0 {
response.WriteJSON(w, response.ErrDefault("请不要作死"))
return
}
var cnt int
if err := db.QueryRow(`SELECT COUNT(1) FROM user WHERE user = ? AND id != ?`, username, id).Scan(&cnt); err != nil {
response.WriteJSON(w, response.Err(-2, err.Error()))
@@ -151,6 +165,20 @@ func (h *Handler) userDelete(w http.ResponseWriter, r *http.Request) {
return
}
var roleID int
if err := h.repo.DB().QueryRow(`SELECT role_id FROM user WHERE id = ?`, id).Scan(&roleID); err != nil {
if err == sql.ErrNoRows {
response.WriteJSON(w, response.ErrDefault("用户不存在"))
return
}
response.WriteJSON(w, response.Err(-2, err.Error()))
return
}
if roleID == 0 {
response.WriteJSON(w, response.ErrDefault("请不要作死"))
return
}
db := h.repo.DB()
tx, err := db.Begin()
if err != nil {
@@ -167,6 +195,10 @@ func (h *Handler) userDelete(w http.ResponseWriter, r *http.Request) {
response.WriteJSON(w, response.Err(-2, err.Error()))
return
}
if _, err = tx.Exec(`DELETE FROM group_permission_grant WHERE user_tunnel_id IN (SELECT id FROM user_tunnel WHERE user_id = ?)`, id); err != nil {
response.WriteJSON(w, response.Err(-2, err.Error()))
return
}
if _, err = tx.Exec(`DELETE FROM user_tunnel WHERE user_id = ?`, id); err != nil {
response.WriteJSON(w, response.Err(-2, err.Error()))
return
@@ -175,6 +207,10 @@ func (h *Handler) userDelete(w http.ResponseWriter, r *http.Request) {
response.WriteJSON(w, response.Err(-2, err.Error()))
return
}
if _, err = tx.Exec(`DELETE FROM statistics_flow WHERE user_id = ?`, id); err != nil {
response.WriteJSON(w, response.Err(-2, err.Error()))
return
}
if _, err = tx.Exec(`DELETE FROM user WHERE id = ?`, id); err != nil {
response.WriteJSON(w, response.Err(-2, err.Error()))
return
@@ -248,6 +284,16 @@ func (h *Handler) captchaVerify(w http.ResponseWriter, r *http.Request) {
if id == "" {
id = asString(req["id"])
}
trackData := asString(req["data"])
if trackData == "" {
trackData = asString(req["trackData"])
}
if id == "" || trackData == "" {
w.WriteHeader(http.StatusBadRequest)
_, _ = w.Write([]byte(`{"success":false,"message":"bad request"}`))
return
}
h.storeCaptchaToken(id)
payload := map[string]interface{}{
"success": true,
"data": map[string]interface{}{"validToken": id},