feat: 后台管理新增 UpdateRealnameMode 接口并注册路由 PATCH /api/admin/assets/:identifier/realname-mode

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-04-17 17:32:18 +08:00
parent 363e0efb34
commit c5ed040359
3 changed files with 57 additions and 1 deletions

View File

@@ -19,6 +19,7 @@ import (
type AssetHandler struct {
assetService *assetService.Service
deviceService *deviceService.Service
iotCardService *iotCardService.Service
iotCardStopResume *iotCardService.StopResumeService
assetPolling *pollingSvc.AssetPollingService
assetLifecycleService AssetLifecycleService
@@ -28,12 +29,14 @@ type AssetHandler struct {
func NewAssetHandler(
assetSvc *assetService.Service,
deviceSvc *deviceService.Service,
iotCardSvc *iotCardService.Service,
iotCardStopResume *iotCardService.StopResumeService,
assetPolling *pollingSvc.AssetPollingService,
) *AssetHandler {
return &AssetHandler{
assetService: assetSvc,
deviceService: deviceSvc,
iotCardService: iotCardSvc,
iotCardStopResume: iotCardStopResume,
assetPolling: assetPolling,
}
@@ -283,3 +286,47 @@ func (h *AssetHandler) UpdatePollingStatus(c *fiber.Ctx) error {
EnablePolling: req.EnablePolling,
})
}
// UpdateRealnamePolicy 更新资产实名认证策略
// PATCH /api/admin/assets/:identifier/realname-mode
func (h *AssetHandler) UpdateRealnamePolicy(c *fiber.Ctx) error {
identifier := c.Params("identifier")
if identifier == "" {
return errors.New(errors.CodeInvalidParam)
}
var req dto.UpdateAssetRealnamePolicyRequest
if err := c.BodyParser(&req); err != nil {
return errors.New(errors.CodeInvalidParam)
}
if req.RealnamePolicy != constants.RealnamePolicyNone &&
req.RealnamePolicy != constants.RealnamePolicyBeforeOrder &&
req.RealnamePolicy != constants.RealnamePolicyAfterOrder {
return errors.New(errors.CodeInvalidParam, "无效的实名认证策略")
}
asset, err := h.assetService.Resolve(c.UserContext(), identifier)
if err != nil {
return err
}
switch asset.AssetType {
case "card":
if err := h.iotCardService.UpdateRealnamePolicy(c.UserContext(), asset.AssetID, req.RealnamePolicy); err != nil {
return err
}
case "device":
if err := h.deviceService.UpdateRealnamePolicy(c.UserContext(), asset.AssetID, req.RealnamePolicy); err != nil {
return err
}
default:
return errors.New(errors.CodeInvalidParam, "不支持的资产类型")
}
return response.Success(c, &dto.UpdateAssetRealnamePolicyResponse{
AssetType: asset.AssetType,
AssetID: asset.AssetID,
RealnamePolicy: req.RealnamePolicy,
})
}