package dto // ========== 选卡方式常量 ========== const ( // SelectionTypeList ICCID列表选择 SelectionTypeList = "list" // SelectionTypeRange 号段范围选择 SelectionTypeRange = "range" // SelectionTypeFilter 筛选条件选择 SelectionTypeFilter = "filter" ) // ========== 分配请求/响应 ========== // AllocateStandaloneCardsRequest 分配单卡请求 type AllocateStandaloneCardsRequest struct { // ToShopID 目标店铺ID(必填,必须是直属下级) ToShopID uint `json:"to_shop_id" validate:"required,min=1" required:"true" minimum:"1" description:"目标店铺ID"` // SelectionType 选卡方式(必填) // list: ICCID列表选择 // range: 号段范围选择 // filter: 筛选条件选择 SelectionType string `json:"selection_type" validate:"required,oneof=list range filter" required:"true" enum:"list,range,filter" description:"选卡方式 (list:ICCID列表, range:号段范围, filter:筛选条件)"` // ===== selection_type=list 时使用 ===== // ICCIDs ICCID列表(最多1000个) ICCIDs []string `json:"iccids" validate:"required_if=SelectionType list,omitempty,max=1000,dive,required,max=20" description:"ICCID列表(selection_type=list时必填,最多1000个)"` // ===== selection_type=range 时使用 ===== // ICCIDStart 起始ICCID ICCIDStart string `json:"iccid_start" validate:"required_if=SelectionType range,omitempty,max=20" maxLength:"20" description:"起始ICCID(selection_type=range时必填)"` // ICCIDEnd 结束ICCID ICCIDEnd string `json:"iccid_end" validate:"required_if=SelectionType range,omitempty,max=20" maxLength:"20" description:"结束ICCID(selection_type=range时必填)"` // ===== selection_type=filter 时使用 ===== // CarrierID 运营商ID CarrierID *uint `json:"carrier_id" description:"运营商ID(selection_type=filter时可选)"` // BatchNo 批次号 BatchNo string `json:"batch_no" validate:"omitempty,max=100" maxLength:"100" description:"批次号(selection_type=filter时可选)"` // Status 卡状态 Status *int `json:"status" validate:"omitempty,min=1,max=4" minimum:"1" maximum:"4" description:"卡状态 (1:在库, 2:已分销)(selection_type=filter时可选)"` // Remark 备注 Remark string `json:"remark" validate:"omitempty,max=500" maxLength:"500" description:"备注"` } // AllocateStandaloneCardsResponse 分配单卡响应 type AllocateStandaloneCardsResponse struct { // TotalCount 待分配总数 TotalCount int `json:"total_count" description:"待分配总数"` // SuccessCount 成功数 SuccessCount int `json:"success_count" description:"成功数"` // FailCount 失败数 FailCount int `json:"fail_count" description:"失败数"` // AllocationNo 分配单号 AllocationNo string `json:"allocation_no" description:"分配单号"` // FailedItems 失败项列表 FailedItems []AllocationFailedItem `json:"failed_items" description:"失败项列表"` } // AllocationFailedItem 分配失败项 type AllocationFailedItem struct { // ICCID 卡ICCID ICCID string `json:"iccid" description:"ICCID"` // Reason 失败原因 Reason string `json:"reason" description:"失败原因"` } // ========== 回收请求/响应 ========== // RecallStandaloneCardsRequest 回收单卡请求 // 系统自动识别卡所属店铺,只要是操作者的直属下级店铺即可回收 type RecallStandaloneCardsRequest struct { // SelectionType 选卡方式(必填) SelectionType string `json:"selection_type" validate:"required,oneof=list range filter" required:"true" enum:"list,range,filter" description:"选卡方式 (list:ICCID列表, range:号段范围, filter:筛选条件)"` // ===== selection_type=list 时使用 ===== ICCIDs []string `json:"iccids" validate:"required_if=SelectionType list,omitempty,max=1000,dive,required,max=20" description:"ICCID列表(selection_type=list时必填,最多1000个)"` // ===== selection_type=range 时使用 ===== ICCIDStart string `json:"iccid_start" validate:"required_if=SelectionType range,omitempty,max=20" maxLength:"20" description:"起始ICCID(selection_type=range时必填)"` ICCIDEnd string `json:"iccid_end" validate:"required_if=SelectionType range,omitempty,max=20" maxLength:"20" description:"结束ICCID(selection_type=range时必填)"` // ===== selection_type=filter 时使用 ===== CarrierID *uint `json:"carrier_id" description:"运营商ID(selection_type=filter时可选)"` BatchNo string `json:"batch_no" validate:"omitempty,max=100" maxLength:"100" description:"批次号(selection_type=filter时可选)"` // Remark 备注 Remark string `json:"remark" validate:"omitempty,max=500" maxLength:"500" description:"备注"` } // RecallStandaloneCardsResponse 回收单卡响应 type RecallStandaloneCardsResponse struct { // TotalCount 待回收总数 TotalCount int `json:"total_count" description:"待回收总数"` // SuccessCount 成功数 SuccessCount int `json:"success_count" description:"成功数"` // FailCount 失败数 FailCount int `json:"fail_count" description:"失败数"` // AllocationNo 回收单号 AllocationNo string `json:"allocation_no" description:"回收单号"` // FailedItems 失败项列表 FailedItems []AllocationFailedItem `json:"failed_items" description:"失败项列表"` }