fix: allow clearing user remark in basic info update

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
2026-05-25 20:54:28 -07:00
parent 7f2db02da9
commit 7d1c71ad5b
4 changed files with 42 additions and 5 deletions
+1 -1
View File
@@ -51,7 +51,7 @@ type (
RefererId *int64 `json:"referer_id"`
Enable *bool `json:"enable"`
IsAdmin *bool `json:"is_admin"`
Remark string `json:"remark"`
Remark *string `json:"remark"`
}
UpdateUserNotifySettingRequest {
UserId int64 `json:"user_id" validate:"required"`
@@ -101,7 +101,11 @@ func (l *UpdateUserBasicInfoLogic) UpdateUserBasicInfo(req *types.UpdateUserBasi
}
if req.Commission != nil && *req.Commission != userInfo.Commission {
if isWithdrawalScene(req.Remark) {
remark := ""
if req.Remark != nil {
remark = *req.Remark
}
if isWithdrawalScene(remark) {
logWithdrawalGuard(l.Logger, userInfo.Id)
return errors.Wrapf(xerr.NewErrCode(xerr.InvalidAccess), "commission overwrite is blocked in withdrawal scene")
}
@@ -129,8 +133,8 @@ func (l *UpdateUserBasicInfoLogic) UpdateUserBasicInfo(req *types.UpdateUserBasi
if req.IsAdmin != nil {
userInfo.IsAdmin = req.IsAdmin
}
if req.Remark != "" {
userInfo.Remark = req.Remark
if req.Remark != nil {
userInfo.Remark = *req.Remark
}
if req.OnlyFirstPurchase != nil {
userInfo.OnlyFirstPurchase = req.OnlyFirstPurchase
+1 -1
View File
@@ -3236,7 +3236,7 @@ type UpdateUserBasiceInfoRequest struct {
RefererId *int64 `json:"referer_id"`
Enable *bool `json:"enable"`
IsAdmin *bool `json:"is_admin"`
Remark string `json:"remark"`
Remark *string `json:"remark"`
}
type UpdateUserNotifyRequest struct {
+33
View File
@@ -0,0 +1,33 @@
package types
import (
"encoding/json"
"testing"
)
func TestUpdateUserBasiceInfoRequestDistinguishesOmittedAndEmptyRemark(t *testing.T) {
var omitted UpdateUserBasiceInfoRequest
if err := json.Unmarshal([]byte(`{"user_id":1001}`), &omitted); err != nil {
t.Fatalf("unmarshal omitted remark: %v", err)
}
if omitted.Remark != nil {
t.Fatalf("omitted remark should stay nil, got %q", *omitted.Remark)
}
if omitted.RefererId != nil {
t.Fatalf("omitted referer_id should stay nil, got %d", *omitted.RefererId)
}
if omitted.Balance != nil || omitted.GiftAmount != nil || omitted.Commission != nil {
t.Fatalf("omitted money fields should stay nil, got balance=%v gift=%v commission=%v", omitted.Balance, omitted.GiftAmount, omitted.Commission)
}
var cleared UpdateUserBasiceInfoRequest
if err := json.Unmarshal([]byte(`{"user_id":1001,"remark":""}`), &cleared); err != nil {
t.Fatalf("unmarshal empty remark: %v", err)
}
if cleared.Remark == nil {
t.Fatal("explicit empty remark should be present")
}
if *cleared.Remark != "" {
t.Fatalf("explicit empty remark should decode to empty string, got %q", *cleared.Remark)
}
}