fix(backend): 订单列表 user_name 在 real_name 为空时回退 username
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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_UserNameFallbackToUsername:real_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")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user