Explorar el Código

feat:完善sim卡信息的API接口

Jerry Liang hace 5 meses
padre
commit
a75a42b645

+ 2 - 0
service/repositories/api/acceleronix/acceleronixHttpClient.go

@@ -13,6 +13,8 @@ import (
 	"go.uber.org/zap"
 )
 
+// API文档地址:https://cmp.acceleronix.io/document/home
+
 const (
 	mainUrl                 = "https://cmp.acceleronix.io/gateway/openapi"
 	appKey                  = "0cE57qK03qsA9158"

+ 185 - 10
service/repositories/api/acceleronix/simCardManage.go

@@ -2,11 +2,11 @@ package acceleronix
 
 import (
 	"encoding/json"
-	"fwh-toolbox-server/domain"
 
 	"go.uber.org/zap"
 )
 
+// SIM卡状态
 type AcceleronixSimCardState int
 
 const (
@@ -21,6 +21,7 @@ const (
 	SCS_Cancellation                                       // 10 注销
 )
 
+// 查询SIM列表 - 请求结构体
 type AcceleronixSimCardListRequestBody struct {
 	EnterpriseCode      *string                  `json:"enterpriseCode,omitempty"`      // 企业编码
 	EnterpriseDataPlan  *string                  `json:"enterpriseDataPlan,omitempty"`  // 企业资费计划名称
@@ -35,6 +36,7 @@ type AcceleronixSimCardListRequestBody struct {
 	SimType             *string                  `json:"simType,omitempty"`             // 卡类型
 }
 
+// 查询SIM列表 - 响应
 type AcceleronixSimCardListResponse struct {
 	Code int `json:"code"` // 响应码
 	Data struct {
@@ -64,19 +66,121 @@ type AcceleronixSimCardListResponse struct {
 	ReqId string `json:"reqId"`
 }
 
+// 查询SIM卡详情 - 响应
+type AcceleronixSimCardInfoResponse struct {
+	Code int `json:"code"` // 响应码
+	Data struct {
+		ActivationTime          string                  `json:"activationTime"`          // 激活时间 格式:yyyy-MM-dd
+		Apn                     string                  `json:"apn"`                     // APN
+		CountryRegion           string                  `json:"countryRegion"`           // 所在国家/地区
+		Enterprise              string                  `json:"enterprise"`              // 归属企业
+		EnterpriseDataPlan      string                  `json:"enterpriseDataPlan"`      // 企业资费计划
+		EnterpriseDataPlanCode  string                  `json:"enterpriseDataPlanCode"`  // 计划编码
+		ExpirationTime          string                  `json:"expirationTime"`          // 到期时间 格式:yyyy-MM-dd
+		FirstActivationCdrTime  string                  `json:"firstActivationCdrTime"`  // 激活首次使用时间,格式yyyy-MM-dd
+		Iccid                   string                  `json:"iccid"`                   // ICCID
+		Imei                    string                  `json:"imei"`                    // IMEI
+		Imsi                    string                  `json:"imsi"`                    // IMSI
+		InitialTime             string                  `json:"initialTime"`             // 开卡时间 格式:yyyy-MM-dd
+		Label                   string                  `json:"label"`                   // 标签
+		LastSessionTime         string                  `json:"lastSessionTime"`         // 上次会话时间 格式:yyyy-MM-dd HH:mm:ss
+		Msisdn                  string                  `json:"msisdn"`                  // MSISDN
+		NetCommStatus           int32                   `json:"netCommStatus"`           // 网络通讯状态:0:关闭 1:开启
+		NetworkType             string                  `json:"networkType"`             // 网络制式
+		OperatorNetwork         string                  `json:"operatorNetwork"`         // 所在运营商网络
+		Rat                     string                  `json:"rat"`                     // RAT
+		SimId                   string                  `json:"simId"`                   // SIM ID
+		SimState                AcceleronixSimCardState `json:"simState"`                // 卡状态 AcceleronixSimCardState
+		SimStateChangeReason    string                  `json:"simStateChangeReason"`    // 卡状态变更原因
+		SimType                 string                  `json:"simType"`                 // 卡类型
+		UsedDataOfCurrentPeriod int64                   `json:"usedDataOfCurrentPeriod"` // 当前周期数据用量(B)
+	} `json:"data"` // 响应体
+	Msg   string `json:"msg"` // 响应描述
+	ReqId string `json:"reqId"`
+}
+
+// 批量查询SIM卡流量 - 请求结构体
 type AcceleronixBatchDataUsageRequestBody struct {
 	Iccids []string `json:"iccids"` // ICCID 最多支持100张卡批量操作
 	Month  string   `json:"month"`  // 统计月份,yyyyMM 日期格式化字符串
 }
 
-type AcceleronixSimCardDataUsageInfo struct {
-	dataUsageDetails       []struct{} `json:"dataUsageDetails"` // 流量详细
-	iccid                  string     `json:"iccid"` // ICCID
-	month                  string     `json:"month"` // 统计月份 格式:yyyyMM
-	outsideRegionDataUsage string     `json:"outsideRegionDataUsage"` // 超区流量 单位:MB
-	remainingData          string     `json:"remainingData"`
-	totalDataAllowance     string     `json:"totalDataAllowance"`
-	totalDataUsage         string     `json:"totalDataUsage"`
+// 批量查询SIM卡流量 - 响应
+type AcceleronixSimCardDataUsageInfoResponse struct {
+	DataUsageDetails []struct {
+		DataAllowance          string `json:"dataAllowance"`          // 总流量 单位:MB
+		DataUsage              string `json:"dataUsage"`              // 已用流量 单位:MB
+		OrderName              string `json:"orderName"`              // 订购名
+		OutsideRegionDataUsage string `json:"outsideRegionDataUsage"` // 超区流量 单位:MB
+		Type                   int32  `json:"type"`                   // 流量类型 1:激活期资费套餐 2:测试期资费套餐 3:流量包
+	} `json:"dataUsageDetails"` // 流量详细
+	Iccid                  string `json:"iccid"`                  // ICCID
+	Month                  string `json:"month"`                  // 统计月份 格式:yyyyMM
+	OutsideRegionDataUsage string `json:"outsideRegionDataUsage"` // 超区流量 单位:MB
+	RemainingData          string `json:"remainingData"`          // 剩余流量(若无使用上限,剩余流量也为0) 单位:MB
+	TotalDataAllowance     string `json:"totalDataAllowance"`     // 总流量 单位:MB
+	TotalDataUsage         string `json:"totalDataUsage"`         // 已用流量 单位:MB
+}
+
+// 查询流量池列表 - 请求结构体
+type AcceleronixDataPoolListRequestBody struct {
+	EnterpriseCode *string `json:"enterpriseCode,omitempty"` // 企业编码。默认查询范围:本企业。可通过“子企业编码”查询子企业流量池
+	DataPoolId     *string `json:"dataPoolId"`               // 流量池ID
+	PageNum        uint    `json:"pageNum"`                  // 页码 默认值:1
+	PageSize       uint    `json:"pageSize"`                 // 每页记录数 默认值:10 最大值:1000
+}
+
+// 查询流量池列表 - 响应
+type AcceleronixDataPoolListResponse struct {
+	Code int `json:"code"` // 响应码
+	Data struct {
+		Current int64 `json:"current"` // 当前页码
+		List    []struct {
+			DataPlanAllowance   string  `json:"dataPlanAllowance"`   // 资费计划额度(MB)
+			DataPoolId          string  `json:"dataPoolId"`          // 流量池ID
+			DataPoolName        string  `json:"dataPoolName"`        // 流量池名称
+			DataUsage           float32 `json:"dataUsage"`           // 数据用量(MB)
+			EffectiveSims       int64   `json:"effectiveSims"`       // 生效SIM数
+			EnterpriseName      string  `json:"enterpriseName"`      // 企业名称
+			Excessive           float32 `json:"excessive"`           // 超池用量(MB)
+			RemainingData       float32 `json:"remainingData"`       // 剩余用量(MB)
+			RemainingPercentage float32 `json:"remainingPercentage"` // 剩余百分比(%)
+			TotalData           float32 `json:"totalData"`           // 池总量(MB)
+			TotalSims           int64   `json:"totalSims"`           // 总SIM数
+			TotalVolume         float32 `json:"totalVolume"`         // 流量包总量(MB)
+			UsedSms             int64   `json:"usedSms"`             // 短信用量(条)
+		} `json:"list"` // 数据集合
+		Pages int64 `json:"pages"` // 总页码
+		Size  int64 `json:"size"`  // 每页数量
+		Total int64 `json:"total"` // 总条数
+	} `json:"data"` // 响应体
+	Msg   string `json:"msg"` // 响应描述
+	ReqId string `json:"reqId"`
+}
+
+// 查询流量池SIM详情 - 响应
+type AcceleronixDataPoolSimInfoResponse struct {
+	Code int `json:"code"` // 响应码
+	Data struct {
+		Current int64 `json:"current"` // 当前页码
+		List    []struct {
+			DataSharingState        int32                   `json:"dataSharingState"`        // 数据共享状态 0:未生效 1:生效
+			DataUsage               float32                 `json:"dataUsage"`               // 当月数据用量(MB)
+			EffectiveTime           string                  `json:"effectiveTime"`           // 生效时间 格式:yyyy-MM-dd HH:mm:ss
+			EnterpriseDataPlan      string                  `json:"enterpriseDataPlan"`      // 企业资费计划
+			EnterpriseDataPlanCode  string                  `json:"enterpriseDataPlanCode"`  // 企业资费计划编码
+			EstimatedExpirationTime string                  `json:"estimatedExpirationTime"` // 预计失效时间 格式:yyyy-MM-dd HH:mm:ss
+			Iccid                   string                  `json:"iccid"`                   // ICCID
+			PoolInTime              string                  `json:"poolInTime"`              // 入池时间 格式:yyyy-MM-dd HH:mm:ss
+			SimState                AcceleronixSimCardState `json:"simState"`                // 卡状态 AcceleronixSimCardState
+			UsedSms                 float32                 `json:"usedSms"`                 // 当月短信用量(条)
+		} `json:"list"` // 数据集合
+		Pages int64 `json:"pages"` // 总页码
+		Size  int64 `json:"size"`  // 每页数量
+		Total int64 `json:"total"` // 总条数
+	} `json:"data"` // 响应体
+	Msg   string `json:"msg"` // 响应描述
+	ReqId string `json:"reqId"`
 }
 
 // 查询SIM卡列表
@@ -98,8 +202,79 @@ func QuerySimCardList(page uint, size uint) (*AcceleronixSimCardListResponse, er
 	return &resList, nil
 }
 
+// 查询SIM卡详情
+func QuerySimCardInfo(iccid string) (*AcceleronixSimCardInfoResponse, error) {
+	res, err := acceleronixHttpPost("/sim/detail", map[string]interface{}{
+		"iccid": iccid,
+	})
+	if err != nil {
+		zap.L().Error("QuerySimCardInfo failed.", zap.String("err", err.Error()))
+		return nil, err
+	}
+
+	var resInfo AcceleronixSimCardInfoResponse
+	if err := json.Unmarshal(res.Body, &resInfo); err != nil {
+		return nil, err
+	}
+
+	return &resInfo, nil
+}
+
 // 批量获取SIM卡数据用量信息
 // month 格式YYYYMM exp.202301
-func QueryBatchSimCardDataInfo(iccidList []string, month string) (*domain.SmartHubSimCardInfoList, error) {
+func QueryBatchSimCardDataInfo(iccidList []string, month string) ([]AcceleronixSimCardDataUsageInfoResponse, error) {
+	res, err := acceleronixHttpPost("/sim/batchQueryMonthData", AcceleronixBatchDataUsageRequestBody{
+		Iccids: iccidList,
+		Month:  month,
+	})
+	if err != nil {
+		zap.L().Error("QueryBatchSimCardDataInfo failed.", zap.String("err", err.Error()))
+		return nil, err
+	}
+
+	var resList []AcceleronixSimCardDataUsageInfoResponse
+	if err := json.Unmarshal(res.Body, &resList); err != nil {
+		return nil, err
+	}
+
+	return resList, nil
+}
+
+// 查询流量池列表
+func QueryDataPoolList(page uint, size uint) (*AcceleronixDataPoolListResponse, error) {
+	res, err := acceleronixHttpPost("/dataPool/page", AcceleronixDataPoolListRequestBody{
+		PageNum:  page,
+		PageSize: size,
+	})
+	if err != nil {
+		zap.L().Error("QueryDataPoolList failed.", zap.String("err", err.Error()))
+		return nil, err
+	}
+
+	var resList AcceleronixDataPoolListResponse
+	if err := json.Unmarshal(res.Body, &resList); err != nil {
+		return nil, err
+	}
+
+	return &resList, nil
+}
+
+// 查询流量池SIM详情
+func QueryDataPoolSimInfo(dataPoolId string, page uint, size uint) (*AcceleronixDataPoolSimInfoResponse, error) {
+	res, err := acceleronixHttpPost("/dataPool/detail", map[string]interface{}{
+		"dataPoolId": dataPoolId,
+		"pageNum":    page,
+		"pageSize":   size,
+	})
+	if err != nil {
+		zap.L().Error("QueryDataPoolSimInfo failed.", zap.String("err", err.Error()))
+		return nil, err
+	}
+
+	var resInfo AcceleronixDataPoolSimInfoResponse
+	if err := json.Unmarshal(res.Body, &resInfo); err != nil {
+		return nil, err
+	}
 
+	return &resInfo, nil
 }

+ 2 - 0
service/repositories/api/smartHub/smartHttpClient.go

@@ -7,6 +7,8 @@ import (
 	"time"
 )
 
+// API文档地址:https://apidoc-cn.smh.smarthing.com/
+
 const (
 	mainUrl                = "https://api.smh.smarthing.com/v1"
 	timeout  time.Duration = 30 * time.Second // SmartHub请求超时30s