chore: 并入 iotlcm-openapi 历史到 openapi/(原提交 3b05d5a)
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
|
||||
"git.5iot.com/iotlcm-public/iotlcm-openapi/internal/dao"
|
||||
"git.5iot.com/iotlcm-public/iotlcm-openapi/internal/model/entity"
|
||||
)
|
||||
|
||||
type cardIdentifier struct {
|
||||
Msisdn string
|
||||
Iccid string
|
||||
Imsi string
|
||||
}
|
||||
|
||||
func validateCardIdentifier(item cardIdentifier) error {
|
||||
count := 0
|
||||
if strings.TrimSpace(item.Msisdn) != "" {
|
||||
count++
|
||||
}
|
||||
if strings.TrimSpace(item.Iccid) != "" {
|
||||
count++
|
||||
}
|
||||
if strings.TrimSpace(item.Imsi) != "" {
|
||||
count++
|
||||
}
|
||||
if count == 0 {
|
||||
return gerror.New("msisdn、iccid、imsi至少传一个")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func cardIdentifierKey(item cardIdentifier) string {
|
||||
switch {
|
||||
case item.Iccid != "":
|
||||
return "iccid:" + item.Iccid
|
||||
case item.Msisdn != "":
|
||||
return "msisdn:" + item.Msisdn
|
||||
default:
|
||||
return "imsi:" + item.Imsi
|
||||
}
|
||||
}
|
||||
|
||||
func cardMatchesIdentifier(card *entity.TSimCardInfo, identifier cardIdentifier) bool {
|
||||
if card == nil {
|
||||
return false
|
||||
}
|
||||
if identifier.Iccid != "" && strings.TrimSpace(card.Iccid) != identifier.Iccid {
|
||||
return false
|
||||
}
|
||||
if identifier.Msisdn != "" && strings.TrimSpace(card.Msisdn) != identifier.Msisdn {
|
||||
return false
|
||||
}
|
||||
if identifier.Imsi != "" && strings.TrimSpace(card.Imsi) != identifier.Imsi {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (s *sCommon) loadCardsByIdentifiers(ctx context.Context, tenantID string, deptIDs []int64, identifiers []cardIdentifier) (map[string]*entity.TSimCardInfo, error) {
|
||||
columns := dao.TSimCardInfo.Columns()
|
||||
result := make(map[string]*entity.TSimCardInfo, len(identifiers))
|
||||
iccidValues := make([]string, 0)
|
||||
msisdnValues := make([]string, 0)
|
||||
imsiValues := make([]string, 0)
|
||||
for _, item := range identifiers {
|
||||
switch {
|
||||
case item.Iccid != "":
|
||||
iccidValues = append(iccidValues, item.Iccid)
|
||||
case item.Msisdn != "":
|
||||
msisdnValues = append(msisdnValues, item.Msisdn)
|
||||
case item.Imsi != "":
|
||||
imsiValues = append(imsiValues, item.Imsi)
|
||||
}
|
||||
}
|
||||
lookup := func(field string, values []string) error {
|
||||
if len(values) == 0 {
|
||||
return nil
|
||||
}
|
||||
var rows []*entity.TSimCardInfo
|
||||
query := dao.TSimCardInfo.Ctx(ctx).
|
||||
Where(columns.TenantId, tenantID).
|
||||
WhereIn(columns.DeptId, deptIDs).
|
||||
WhereIn(field, values).
|
||||
Fields(columns.Iccid, columns.Msisdn, columns.Imsi, columns.PackageTotalFlowMb, columns.UsedFlowMb,
|
||||
columns.CurrentPackageCode, columns.OutboundBatchNo, columns.TrafficCutoffStatus, columns.TrafficCutoffThreshold)
|
||||
if err := query.Scan(&rows); err != nil {
|
||||
return err
|
||||
}
|
||||
for _, row := range rows {
|
||||
if row == nil {
|
||||
continue
|
||||
}
|
||||
if row.Iccid != "" {
|
||||
result["iccid:"+strings.TrimSpace(row.Iccid)] = row
|
||||
}
|
||||
if row.Msisdn != "" {
|
||||
result["msisdn:"+strings.TrimSpace(row.Msisdn)] = row
|
||||
}
|
||||
if row.Imsi != "" {
|
||||
result["imsi:"+strings.TrimSpace(row.Imsi)] = row
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
if err := lookup(columns.Iccid, iccidValues); err != nil {
|
||||
return nil, gerror.Wrap(err, "查询卡片失败")
|
||||
}
|
||||
if err := lookup(columns.Msisdn, msisdnValues); err != nil {
|
||||
return nil, gerror.Wrap(err, "查询卡片失败")
|
||||
}
|
||||
if err := lookup(columns.Imsi, imsiValues); err != nil {
|
||||
return nil, gerror.Wrap(err, "查询卡片失败")
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
Reference in New Issue
Block a user