fix(backend): 订单列表 user_name 在 real_name 为空时回退 username

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-07-10 23:27:24 +08:00
parent 7e99a7a7ee
commit 45a43c20a4
2 changed files with 27 additions and 1 deletions
+5 -1
View File
@@ -741,7 +741,11 @@ func (s *PayService) ListPurchases(shopID uint64, page, pageSize int, status str
return nil, err
}
for _, u := range users {
names[u.ID] = u.RealName
if u.RealName != "" {
names[u.ID] = u.RealName
} else {
names[u.ID] = u.Username
}
}
}
+22
View File
@@ -942,3 +942,25 @@ func TestListPurchases_UserNameJoin(t *testing.T) {
assert.Equal(t, "王老板", byOtn["un-known"].UserName)
assert.Empty(t, byOtn["un-missing"].UserName, "查不到用户留空")
}
// TestListPurchases_UserNameFallbackToUsernamereal_name 为空(用户创建接口该字段可选)时,
// user_name 必须回退 username,不能显示空白。
func TestListPurchases_UserNameFallbackToUsername(t *testing.T) {
db := testutil.SetupTestDB()
svc := newTestPaySvc(db, "http://pay.invalid")
shop := testutil.CreateTestShop(db, "PAY108")
user := testutil.CreateTestUser(db, shop.ID, "noreal", "pass", "admin")
// CreateTestUser 默认会填 real_name,显式置空才能命中回退分支。
require.NoError(t, db.Model(user).Update("real_name", "").Error)
base := time.Now().Add(-time.Hour)
createPurchaseFull(t, db, shop.ID, user.ID, "annual_pro", 599900, "un-noreal", "paid", "", base)
list, err := svc.ListPurchases(shop.ID, 1, 20, "")
require.NoError(t, err)
byOtn := map[string]PurchaseListItem{}
for _, item := range list.Items {
byOtn[item.OutTradeNo] = item
}
assert.Equal(t, "noreal", byOtn["un-noreal"].UserName, "real_name 为空时应回退 username")
}