From 261fbd7180c41953b0d2c2c4c4ee43dd3f618f1b Mon Sep 17 00:00:00 2001 From: vipg Date: Wed, 19 Nov 2025 17:04:47 +0800 Subject: [PATCH] add --- .../lib/pages/country_add_page.dart | 2 +- frontend/asset_assistant/lib/pages/create.go | 205 ------------------ 2 files changed, 1 insertion(+), 206 deletions(-) delete mode 100644 frontend/asset_assistant/lib/pages/create.go diff --git a/frontend/asset_assistant/lib/pages/country_add_page.dart b/frontend/asset_assistant/lib/pages/country_add_page.dart index 2be7582..99df879 100644 --- a/frontend/asset_assistant/lib/pages/country_add_page.dart +++ b/frontend/asset_assistant/lib/pages/country_add_page.dart @@ -14,7 +14,7 @@ class _AddCountryPageState extends State { // 输入控制器 - 新增国旗控制器 final TextEditingController _nameController = TextEditingController(); final TextEditingController _codeController = TextEditingController(); - final TextEditingController _flagController = TextEditingController(); // 新增 + final TextEditingController _flagController = TextEditingController(); // 加载状态 bool _isLoading = false; diff --git a/frontend/asset_assistant/lib/pages/create.go b/frontend/asset_assistant/lib/pages/create.go deleted file mode 100644 index a9872ca..0000000 --- a/frontend/asset_assistant/lib/pages/create.go +++ /dev/null @@ -1,205 +0,0 @@ -package logic4country - -import ( - "asset_assistant/db" - "net/http" - "time" - - "github.com/gin-gonic/gin" - "github.com/google/uuid" - "go.uber.org/zap" -) - -// CreateRequest 注册请求参数结构 -type CreateRequest struct { - Name string `json:"name" binding:"required"` // 国家名称,必填 - Code string `json:"code" binding:"required"` // 国家代码,必填 - Flag string `json:"flag"` // 国旗信息,可选 -} - -// CreateResponse 注册响应结构 -type CreateResponse struct { - Success bool `json:"success"` - Message string `json:"message"` - Data CreateData `json:"data"` -} - -// CreateData 响应数据结构 -type CreateData struct { - CountryID string `json:"country_id"` -} - -// CreateHandler 处理国家创建逻辑 -func CreateHandler(c *gin.Context) { - startTime := time.Now() - reqID := c.Request.Header.Get("X-RegisterRequest-ID") - if reqID == "" { - reqID = uuid.New().String() - zap.L().Debug("✨ 生成新的请求ID", zap.String("req_id", reqID)) - } - - zap.L().Info("📥 收到国家创建请求", - zap.String("req_id", reqID), - zap.String("path", c.Request.URL.Path), - zap.String("method", c.Request.Method), - ) - - var req CreateRequest - if err := c.ShouldBindJSON(&req); err != nil { - zap.L().Warn("⚠️ 请求参数验证失败", - zap.String("req_id", reqID), - zap.Error(err), - zap.Any("request_body", c.Request.Body), - ) - c.JSON(http.StatusBadRequest, CreateResponse{ - Success: false, - Message: "请求参数错误:name和code为必填项", - }) - return - } - - zap.L().Debug("✅ 请求参数验证通过", - zap.String("req_id", reqID), - zap.String("name", req.Name), - zap.String("code", req.Code), - zap.String("flag", req.Flag), // 新增国旗参数日志 - ) - - // 开启数据库事务 - tx, err := db.DB.Begin() - if err != nil { - zap.L().Error("❌ 事务开启失败", - zap.String("req_id", reqID), - zap.Error(err), - ) - c.JSON(http.StatusInternalServerError, CreateResponse{ - Success: false, - Message: "系统错误,请稍后重试", - }) - return - } - - defer func() { - if r := recover(); r != nil { - if err := tx.Rollback(); err != nil { - zap.L().Error("💥 panic后事务回滚失败", - zap.String("req_id", reqID), - zap.Error(err), - ) - } - zap.L().Error("💥 事务处理发生panic", - zap.String("req_id", reqID), - zap.Any("recover", r), - ) - c.JSON(http.StatusInternalServerError, CreateResponse{ - Success: false, - Message: "系统错误,请稍后重试", - }) - } - }() - - // 1. 创建country主表记录 - var countryID string - err = tx.QueryRow("INSERT INTO country DEFAULT VALUES RETURNING id").Scan(&countryID) - if err != nil { - tx.Rollback() - zap.L().Error("❌ country表插入失败", - zap.String("req_id", reqID), - zap.Error(err), - ) - c.JSON(http.StatusInternalServerError, CreateResponse{ - Success: false, - Message: "创建国家记录失败", - }) - return - } - - zap.L().Debug("📝 country表插入成功", - zap.String("req_id", reqID), - zap.String("country_id", countryID), - ) - - // 2. 插入国家名称 - _, err = tx.Exec("INSERT INTO country_name (country_id, name) VALUES ($1, $2)", countryID, req.Name) - if err != nil { - tx.Rollback() - zap.L().Error("❌ country_name表插入失败", - zap.String("req_id", reqID), - zap.String("country_id", countryID), - zap.Error(err), - ) - c.JSON(http.StatusInternalServerError, CreateResponse{ - Success: false, - Message: "保存名称信息失败", - }) - return - } - - // 3. 插入国家代码 - _, err = tx.Exec("INSERT INTO country_code (country_id, code) VALUES ($1, $2)", countryID, req.Code) - if err != nil { - tx.Rollback() - zap.L().Error("❌ country_code表插入失败", - zap.String("req_id", reqID), - zap.String("country_id", countryID), - zap.Error(err), - ) - c.JSON(http.StatusInternalServerError, CreateResponse{ - Success: false, - Message: "保存代码信息失败", - }) - return - } - - // 4. 新增:插入国旗信息(如果提供) - if req.Flag != "" { - _, err = tx.Exec("INSERT INTO country_flag (country_id, flag) VALUES ($1, $2)", countryID, req.Flag) - if err != nil { - tx.Rollback() - zap.L().Error("❌ country_flag表插入失败", - zap.String("req_id", reqID), - zap.String("country_id", countryID), - zap.Error(err), - ) - c.JSON(http.StatusInternalServerError, CreateResponse{ - Success: false, - Message: "保存国旗信息失败", - }) - return - } - zap.L().Debug("📝 country_flag表插入成功", - zap.String("req_id", reqID), - zap.String("country_id", countryID), - ) - } - - // 提交事务 - if err := tx.Commit(); err != nil { - tx.Rollback() - zap.L().Error("❌ 事务提交失败", - zap.String("req_id", reqID), - zap.String("country_id", countryID), - zap.Error(err), - ) - c.JSON(http.StatusInternalServerError, CreateResponse{ - Success: false, - Message: "数据提交失败,请稍后重试", - }) - return - } - - duration := time.Since(startTime) - zap.L().Info("✅ 国家创建请求处理完成", - zap.String("req_id", reqID), - zap.String("country_id", countryID), - zap.Duration("duration", duration), - ) - - c.JSON(http.StatusOK, CreateResponse{ - Success: true, - Message: "创建成功", - Data: CreateData{ - CountryID: countryID, - }, - }) -} \ No newline at end of file