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:
@@ -119,7 +119,7 @@ func initHandlers(svc *services, deps *Dependencies) *Handlers {
|
|||||||
Asset: func() *admin.AssetHandler {
|
Asset: func() *admin.AssetHandler {
|
||||||
pollingQueueMgr := pollingPkg.NewPollingQueueManager(deps.Redis, constants.PollingShardCount, deps.Logger)
|
pollingQueueMgr := pollingPkg.NewPollingQueueManager(deps.Redis, constants.PollingShardCount, deps.Logger)
|
||||||
assetPollingSvc := pollingSvcPkg.NewAssetPollingService(deviceStore, deviceSimBindingStore, svc.IotCard, pollingQueueMgr, deps.Logger)
|
assetPollingSvc := pollingSvcPkg.NewAssetPollingService(deviceStore, deviceSimBindingStore, svc.IotCard, pollingQueueMgr, deps.Logger)
|
||||||
h := admin.NewAssetHandler(svc.Asset, svc.Device, svc.StopResumeService, assetPollingSvc)
|
h := admin.NewAssetHandler(svc.Asset, svc.Device, svc.IotCard, svc.StopResumeService, assetPollingSvc)
|
||||||
h.SetLifecycleService(svc.AssetLifecycle)
|
h.SetLifecycleService(svc.AssetLifecycle)
|
||||||
return h
|
return h
|
||||||
}(),
|
}(),
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import (
|
|||||||
type AssetHandler struct {
|
type AssetHandler struct {
|
||||||
assetService *assetService.Service
|
assetService *assetService.Service
|
||||||
deviceService *deviceService.Service
|
deviceService *deviceService.Service
|
||||||
|
iotCardService *iotCardService.Service
|
||||||
iotCardStopResume *iotCardService.StopResumeService
|
iotCardStopResume *iotCardService.StopResumeService
|
||||||
assetPolling *pollingSvc.AssetPollingService
|
assetPolling *pollingSvc.AssetPollingService
|
||||||
assetLifecycleService AssetLifecycleService
|
assetLifecycleService AssetLifecycleService
|
||||||
@@ -28,12 +29,14 @@ type AssetHandler struct {
|
|||||||
func NewAssetHandler(
|
func NewAssetHandler(
|
||||||
assetSvc *assetService.Service,
|
assetSvc *assetService.Service,
|
||||||
deviceSvc *deviceService.Service,
|
deviceSvc *deviceService.Service,
|
||||||
|
iotCardSvc *iotCardService.Service,
|
||||||
iotCardStopResume *iotCardService.StopResumeService,
|
iotCardStopResume *iotCardService.StopResumeService,
|
||||||
assetPolling *pollingSvc.AssetPollingService,
|
assetPolling *pollingSvc.AssetPollingService,
|
||||||
) *AssetHandler {
|
) *AssetHandler {
|
||||||
return &AssetHandler{
|
return &AssetHandler{
|
||||||
assetService: assetSvc,
|
assetService: assetSvc,
|
||||||
deviceService: deviceSvc,
|
deviceService: deviceSvc,
|
||||||
|
iotCardService: iotCardSvc,
|
||||||
iotCardStopResume: iotCardStopResume,
|
iotCardStopResume: iotCardStopResume,
|
||||||
assetPolling: assetPolling,
|
assetPolling: assetPolling,
|
||||||
}
|
}
|
||||||
@@ -283,3 +286,47 @@ func (h *AssetHandler) UpdatePollingStatus(c *fiber.Ctx) error {
|
|||||||
EnablePolling: req.EnablePolling,
|
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,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -118,4 +118,13 @@ func registerAssetRoutes(router fiber.Router, handler *admin.AssetHandler, walle
|
|||||||
Output: new(dto.UpdateAssetPollingStatusResponse),
|
Output: new(dto.UpdateAssetPollingStatusResponse),
|
||||||
Auth: true,
|
Auth: true,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Register(assets, doc, groupPath, "PATCH", "/:identifier/realname-mode", handler.UpdateRealnamePolicy, RouteSpec{
|
||||||
|
Summary: "更新资产实名认证策略",
|
||||||
|
Description: "更新指定资产(IoT卡或设备)的实名认证策略,支持 none/before_order/after_order 三种模式。",
|
||||||
|
Tags: []string{"资产管理"},
|
||||||
|
Input: new(dto.UpdateAssetRealnamePolicyRequest),
|
||||||
|
Output: new(dto.UpdateAssetRealnamePolicyResponse),
|
||||||
|
Auth: true,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user