feat: 卡实名时间以上游 archiveTime 为准并记录实名时间历史,新增二次实名批次
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
This commit is contained in:
128
internal/handler/admin/card_realname.go
Normal file
128
internal/handler/admin/card_realname.go
Normal file
@@ -0,0 +1,128 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"github.com/go-playground/validator/v10"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
|
||||
"github.com/break/junhong_cmp_fiber/internal/application/realnamereset"
|
||||
"github.com/break/junhong_cmp_fiber/internal/model/dto"
|
||||
"github.com/break/junhong_cmp_fiber/internal/query/cardrealname"
|
||||
"github.com/break/junhong_cmp_fiber/pkg/errors"
|
||||
"github.com/break/junhong_cmp_fiber/pkg/response"
|
||||
)
|
||||
|
||||
// CardRealnameHandler 处理卡实名记录与二次实名批次。
|
||||
type CardRealnameHandler struct {
|
||||
reset *realnamereset.Service
|
||||
query *cardrealname.Query
|
||||
validator *validator.Validate
|
||||
}
|
||||
|
||||
// NewCardRealnameHandler 创建卡实名记录处理器。
|
||||
func NewCardRealnameHandler(reset *realnamereset.Service, query *cardrealname.Query, validate *validator.Validate) *CardRealnameHandler {
|
||||
if validate == nil {
|
||||
validate = validator.New()
|
||||
}
|
||||
return &CardRealnameHandler{reset: reset, query: query, validator: validate}
|
||||
}
|
||||
|
||||
func (h *CardRealnameHandler) validate(prefix string, req any) error {
|
||||
if err := h.validator.Struct(req); err != nil {
|
||||
return errors.New(errors.CodeInvalidParam, validationMessage(prefix, req, err))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// CardHistory 查询单卡当前实名时间与实名时间历史。
|
||||
// GET /api/admin/iot-cards/:id/realname-history
|
||||
func (h *CardRealnameHandler) CardHistory(c *fiber.Ctx) error {
|
||||
var req dto.CardRealnameHistoryListRequest
|
||||
if err := c.QueryParser(&req); err != nil {
|
||||
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
|
||||
}
|
||||
id, err := rateLimitPathID(c, "id", "IoT 卡 ID")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
req.ID = id
|
||||
if err := h.validate("实名记录查询参数不合法", &req); err != nil {
|
||||
return err
|
||||
}
|
||||
result, err := h.query.CardHistory(c.UserContext(), req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return response.Success(c, result)
|
||||
}
|
||||
|
||||
// ImportResetBatch 导入二次实名名单。
|
||||
// POST /api/admin/realname-reset/batches
|
||||
func (h *CardRealnameHandler) ImportResetBatch(c *fiber.Ctx) error {
|
||||
var req dto.RealnameResetImportRequest
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
|
||||
}
|
||||
if err := h.validate("二次实名导入参数不合法", &req); err != nil {
|
||||
return err
|
||||
}
|
||||
result, err := h.reset.Import(c.UserContext(), req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return response.Success(c, result)
|
||||
}
|
||||
|
||||
// ListResetBatches 分页查询二次实名批次。
|
||||
// GET /api/admin/realname-reset/batches
|
||||
func (h *CardRealnameHandler) ListResetBatches(c *fiber.Ctx) error {
|
||||
var req dto.RealnameResetBatchListRequest
|
||||
if err := c.QueryParser(&req); err != nil {
|
||||
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
|
||||
}
|
||||
if err := h.validate("二次实名批次查询参数不合法", &req); err != nil {
|
||||
return err
|
||||
}
|
||||
list, total, page, size, err := h.query.ListResetBatches(c.UserContext(), req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return response.SuccessWithPagination(c, list, total, page, size)
|
||||
}
|
||||
|
||||
// GetResetBatch 查询二次实名批次详情。
|
||||
// GET /api/admin/realname-reset/batches/:id
|
||||
func (h *CardRealnameHandler) GetResetBatch(c *fiber.Ctx) error {
|
||||
id, err := rateLimitPathID(c, "id", "批次 ID")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
result, err := h.query.GetResetBatch(c.UserContext(), id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return response.Success(c, result)
|
||||
}
|
||||
|
||||
// RevertResetBatch 撤销批次中仍在等待二次实名的卡。
|
||||
// POST /api/admin/realname-reset/batches/:id/revert
|
||||
func (h *CardRealnameHandler) RevertResetBatch(c *fiber.Ctx) error {
|
||||
var req dto.RealnameResetRevertRequest
|
||||
if len(c.Body()) > 0 {
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
|
||||
}
|
||||
}
|
||||
id, err := rateLimitPathID(c, "id", "批次 ID")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
req.ID = id
|
||||
if err := h.validate("二次实名撤销参数不合法", &req); err != nil {
|
||||
return err
|
||||
}
|
||||
result, err := h.reset.Revert(c.UserContext(), req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return response.Success(c, result)
|
||||
}
|
||||
Reference in New Issue
Block a user