feat(admin): add admin endpoint to list user devices with JPush registration IDs
All checks were successful
Build Backend / build (push) Successful in 2m32s
Build Backend / build-docker (push) Successful in 6m22s

- Add AdminDeviceTokenResponse DTO including push_token (RegistrationID) for push debugging
- Add DeviceTokenToAdminResponse and DeviceTokensToAdminResponse converters
- Inject PushService into AdminUserHandler for retrieving user devices
- Register GET /api/v1/admin/users/:id/devices route for querying target user's device tokens
This commit is contained in:
lafay
2026-06-18 20:07:24 +08:00
parent 821e066446
commit cb85c62093
10 changed files with 116 additions and 23 deletions

View File

@@ -14,12 +14,14 @@ import (
// AdminUserHandler 管理端用户处理器
type AdminUserHandler struct {
adminUserService service.AdminUserService
pushService service.PushService
}
// NewAdminUserHandler 创建管理端用户处理器
func NewAdminUserHandler(adminUserService service.AdminUserService) *AdminUserHandler {
func NewAdminUserHandler(adminUserService service.AdminUserService, pushService service.PushService) *AdminUserHandler {
return &AdminUserHandler{
adminUserService: adminUserService,
pushService: pushService,
}
}
@@ -103,3 +105,22 @@ func (h *AdminUserHandler) UpdateUserStatus(c *gin.Context) {
response.Success(c, userDetail)
}
// GetUserDevices 获取用户设备列表(含 registration_id
// GET /api/v1/admin/users/:id/devices
// 供后台查询目标用户各设备的 JPush RegistrationIDpush_token用于排查推送问题或手动推送测试。
func (h *AdminUserHandler) GetUserDevices(c *gin.Context) {
userID := c.Param("id")
if userID == "" {
response.BadRequest(c, "user id is required")
return
}
devices, err := h.pushService.GetUserDevices(c.Request.Context(), userID)
if err != nil {
response.InternalServerError(c, "failed to get user devices")
return
}
response.Success(c, dto.DeviceTokensToAdminResponse(devices))
}