修复用户地址编辑数据类型错误

This commit is contained in:
czl231
2026-08-11 20:18:18 +08:00
parent 74c5e34275
commit e1e8579a2b
3 changed files with 77 additions and 1 deletions

View File

@@ -73,7 +73,7 @@ func UpdateUserAddress(ctx *gin.Context) {
return err
}
}
return tx.Model(&current).Updates(gin.H{"user_account_id": userAccountID, "address": request.Address, "longitude": request.Longitude, "latitude": request.Latitude, "is_default": request.IsDefault}).Error
return tx.Model(&current).Updates(userAddressUpdateValues(request, userAccountID)).Error
})
if err != nil {
common.RespondRecordError(ctx, err)
@@ -82,6 +82,17 @@ func UpdateUserAddress(ctx *gin.Context) {
infra.Response.Success(ctx, gin.H{"updated": true})
}
// userAddressUpdateValues 构造 GORM 支持的标准更新映射,并保留 false 等零值字段。
func userAddressUpdateValues(request addressRequest, userAccountID uint64) map[string]any {
return map[string]any{
"user_account_id": userAccountID,
"address": request.Address,
"longitude": request.Longitude,
"latitude": request.Latitude,
"is_default": request.IsDefault,
}
}
type serviceRelationRequest struct {
UserAccountIdentity string `json:"user_account_identity" binding:"required"`
GasBasicIdentity string `json:"gas_basic_identity"`

View File

@@ -0,0 +1,30 @@
// 功能描述:验证平台用户地址写入参数与 GORM 的兼容性。
// 版本v1.0
package user
import "testing"
// TestUserAddressUpdateValuesUsesSupportedMap 验证更新参数使用标准映射并保留布尔零值。
func TestUserAddressUpdateValuesUsesSupportedMap(t *testing.T) {
request := addressRequest{
UserAccountIdentity: "00000000-0000-7000-8000-000000000001",
Address: "测试地址 122 号",
Longitude: "",
Latitude: "",
IsDefault: false,
}
values := userAddressUpdateValues(request, 42)
if values["user_account_id"] != uint64(42) {
t.Fatalf("user_account_id = %#v, want 42", values["user_account_id"])
}
if values["address"] != request.Address {
t.Fatalf("address = %#v, want %q", values["address"], request.Address)
}
if value, exists := values["is_default"]; !exists || value != false {
t.Fatalf("is_default = %#v, exists = %v, want false", value, exists)
}
if len(values) != 5 {
t.Fatalf("update field count = %d, want 5", len(values))
}
}