设备的部分改造
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m34s

This commit is contained in:
2026-03-10 10:34:08 +08:00
parent 86f8d0b644
commit b5147d1acb
34 changed files with 1680 additions and 485 deletions

View File

@@ -0,0 +1,78 @@
package iot_card
import (
"context"
"github.com/break/junhong_cmp_fiber/internal/gateway"
"github.com/break/junhong_cmp_fiber/pkg/errors"
)
// validateCardAccess 通过 ICCID 验证卡存在且当前用户有权限访问
// 利用 GORM 数据权限回调自动过滤,确保越权请求返回 404
func (s *Service) validateCardAccess(ctx context.Context, iccid string) error {
_, err := s.iotCardStore.GetByICCID(ctx, iccid)
if err != nil {
return errors.New(errors.CodeNotFound, "卡不存在或无权限访问")
}
return nil
}
// GatewayQueryCardStatus 查询卡实时状态
func (s *Service) GatewayQueryCardStatus(ctx context.Context, iccid string) (*gateway.CardStatusResp, error) {
if err := s.validateCardAccess(ctx, iccid); err != nil {
return nil, err
}
return s.gatewayClient.QueryCardStatus(ctx, &gateway.CardStatusReq{
CardNo: iccid,
})
}
// GatewayQueryFlow 查询流量使用情况
func (s *Service) GatewayQueryFlow(ctx context.Context, iccid string) (*gateway.FlowUsageResp, error) {
if err := s.validateCardAccess(ctx, iccid); err != nil {
return nil, err
}
return s.gatewayClient.QueryFlow(ctx, &gateway.FlowQueryReq{
CardNo: iccid,
})
}
// GatewayQueryRealnameStatus 查询实名认证状态
func (s *Service) GatewayQueryRealnameStatus(ctx context.Context, iccid string) (*gateway.RealnameStatusResp, error) {
if err := s.validateCardAccess(ctx, iccid); err != nil {
return nil, err
}
return s.gatewayClient.QueryRealnameStatus(ctx, &gateway.CardStatusReq{
CardNo: iccid,
})
}
// GatewayGetRealnameLink 获取实名认证跳转链接
func (s *Service) GatewayGetRealnameLink(ctx context.Context, iccid string) (*gateway.RealnameLinkResp, error) {
if err := s.validateCardAccess(ctx, iccid); err != nil {
return nil, err
}
return s.gatewayClient.GetRealnameLink(ctx, &gateway.CardStatusReq{
CardNo: iccid,
})
}
// GatewayStopCard 停止卡服务(通过 Gateway API
func (s *Service) GatewayStopCard(ctx context.Context, iccid string) error {
if err := s.validateCardAccess(ctx, iccid); err != nil {
return err
}
return s.gatewayClient.StopCard(ctx, &gateway.CardOperationReq{
CardNo: iccid,
})
}
// GatewayStartCard 恢复卡服务(通过 Gateway API
func (s *Service) GatewayStartCard(ctx context.Context, iccid string) error {
if err := s.validateCardAccess(ctx, iccid); err != nil {
return err
}
return s.gatewayClient.StartCard(ctx, &gateway.CardOperationReq{
CardNo: iccid,
})
}