| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- package mongo
- import (
- "context"
- "fwh-toolbox-server/database"
- "fwh-toolbox-server/dto"
- "time"
- "go.mongodb.org/mongo-driver/bson"
- "go.mongodb.org/mongo-driver/mongo/options"
- )
- const (
- CollectionName_SimCardManage = "SimCardManage"
- CollectionName_SimCardMonthlyData = "SimCardMonthlyData"
- )
- type SimStatus string
- const (
- SmartHubSimStatusNotActivated SimStatus = "NOT_ACTIVATED" // 未激活
- SmartHubSimStatusActivated SimStatus = "ACTIVATED" // 已激活
- SmartHubSimStatusDeactivated SimStatus = "DEACTIVATED" // 已停用
- SmartHubSimStatusRetired SimStatus = "RETIRED" // 失效
- )
- type SimCardInfo struct {
- GICCID string `bson:"_id" json:"giccid"` // 只取前19位不取检验码
- IMEI string `bson:"imei" json:"imei"` // 国际移动用户识别码
- IMSI string `bson:"imsi" json:"imsi"` // 国际移动用户识别码
- MSISDN string `bson:"msisdn" json:"msisdn"` // 移动用户号码
- Status SimStatus `bson:"status" json:"status"` // 卡状态
- ExpirationTime string `bson:"expirationTime" json:"expirationTime"` // 到期时间(后付费卡没有到期时间) 格式:yyyy-MM-dd
- Month string `bson:"month" json:"month"` // 统计月份 格式:yyyy-MM
- AllDataUsage float64 `bson:"allDataUsage" json:"allDataUsage"` // 月数据用量(KB)
- UpdateTime time.Time `bson:"updateTime" json:"updateTime"` // UTC时间
- }
- type SimCardMonthlyData struct {
- SimId string `bson:"_id" json:"simId"` // GICCID
- UpdateTime time.Time `bson:"updateTime" json:"updateTime"` // UTC时间
- Month string `bson:"month" json:"month"` // 统计月份 格式:yyyy-MM
- AllDataUsage float64 `bson:"allDataUsage" json:"allDataUsage"` // 月数据用量(KB)
- DailyUsage map[string]SimCardDailyUsage `bson:"dailyUsage" json:"dailyUsage"` // 日用量数据信息
- }
- type SimCardDailyUsage struct {
- UpdateTime time.Time `bson:"updateTime" json:"updateTime"` // UTC时间
- Day string `bson:"day" json:"day"` // 统计日期 格式:yyyy-MM-DD
- DataUsage float64 `bson:"dataUsage" json:"dataUsage"` // 数据用量(KB)
- }
- // 查询SIM卡信息(批量)
- func GetSimCardBatchInfo(page, size uint) (*dto.ResPage[SimCardInfo], error) {
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- collection := database.GetCollection(CollectionName_SimCardManage)
- findOptions := options.Find().
- SetSkip(int64((page - 1) * size)).
- SetLimit(int64(size))
- cursor, err := collection.Find(ctx, bson.M{}, findOptions)
- if err != nil {
- return nil, err
- }
- defer cursor.Close(ctx)
- var infoList []SimCardInfo
- for cursor.Next(ctx) {
- var info SimCardInfo
- if err := cursor.Decode(&info); err != nil {
- return nil, err
- }
- infoList = append(infoList, info)
- }
- // 查询总数
- total, err := collection.CountDocuments(ctx, bson.M{})
- if err != nil {
- return nil, err
- }
- res := dto.ResPage[SimCardInfo]{
- Data: infoList,
- PageSize: size,
- PageNum: page,
- Total: uint(total),
- }
- return &res, nil
- }
- // 查询SIM卡信息(单卡)
- func GetSimCardInfo(id string) (*SimCardInfo, error) {
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- collection := database.GetCollection(CollectionName_SimCardManage)
- var info SimCardInfo
- err := collection.FindOne(ctx, bson.M{"_id": id}).Decode(&info)
- if err != nil {
- return nil, err
- }
- return &info, nil
- }
- // 查询SIM卡月数据(单卡)
- func GetSimCardMonthlyData(month string, id string) (*SimCardMonthlyData, error) {
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- collection := database.GetCollection(CollectionName_SimCardMonthlyData)
- var info SimCardMonthlyData
- err := collection.FindOne(ctx, bson.M{"_id": id}).Decode(&info)
- if err != nil {
- return nil, err
- }
- return &info, nil
- }
- // 插入SIM卡基本信息数据
- func UpdateSimCardInfo(info SimCardInfo) error {
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- collection := database.GetCollection(CollectionName_SimCardManage)
- filter := bson.M{"_id": info.GICCID} // 按ID匹配
- _, err := collection.ReplaceOne(ctx, filter, info, options.Replace().SetUpsert(true))
- if err != nil {
- return err
- }
- return nil
- }
- // 插入SIM卡月流量数据
- func UpdateSimCardMonthlyData(data SimCardMonthlyData) error {
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- collection := database.GetCollection(CollectionName_SimCardMonthlyData)
- filter := bson.M{"_id": data.SimId} // 按ID匹配
- _, err := collection.ReplaceOne(ctx, filter, data, options.Replace().SetUpsert(true))
- if err != nil {
- return err
- }
- return nil
- }
|