123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- package grace
- import (
- "context"
- "fmt"
- "go-nc/configs/global"
- "time"
- "github.com/levigross/grequests"
- "github.com/tidwall/gjson"
- )
- var ctx = context.Background()
- // 获取token接口
- func GetSimToken() (string, error) {
- // redis 获取token
- SimToken := global.App.Redis.Get(ctx, "SimToken").Val()
- if SimToken != "" {
- return SimToken, nil
- }
- ro := &grequests.RequestOptions{
- JSON: map[string]interface{}{"id": APP_KEY, "type": "106"},
- Headers: GetHeader(),
- }
- body, err := grequests.Post(APP_HOST+"/aep/APP_getAccessToken_SBO/v1", ro)
- if err != nil {
- fmt.Printf("发送请求时出现错误: %v", err)
- return "", err
- }
- tokenValue := gjson.GetBytes(body.Bytes(), "accessToken").String()
- // 设置9分钟过期
- global.App.Redis.Set(ctx, "SimToken", tokenValue, time.Minute*9).Err()
- return tokenValue, nil
- }
- // 查询指定 sim 卡
- func GetSimInfo(iccid string) (*grequests.Response, error) {
- ro := &grequests.RequestOptions{
- Headers: GetHeader(),
- }
- body, err := grequests.Get(APP_HOST+"/scc/v1/accounts/"+iccid, ro)
- if err != nil {
- global.App.Log.Error("发送请求时出现错误: " + err.Error())
- return nil, err
- }
- return body, nil
- }
- // 查询产品套餐列表
- func GetSimPackageTariffPlan() (*grequests.Response, error) {
- data := NewPagination()
- ro := &grequests.RequestOptions{
- JSON: data,
- Headers: GetHeader(),
- }
- body, err := grequests.Get(APP_HOST+"/scc/v1/products", ro)
- if err != nil {
- global.App.Log.Error("发送请求时出现错误: " + err.Error())
- return nil, err
- }
- return body, nil
- }
- // 查询产品套餐详情
- func GetSimPackageTariffPlanDetail(productId string) (*grequests.Response, error) {
- ro := &grequests.RequestOptions{
- Headers: GetHeader(),
- }
- body, err := grequests.Get(APP_HOST+"/scc/v1/products-detail/"+productId, ro)
- if err != nil {
- global.App.Log.Error("发送请求时出现错误: " + err.Error())
- return nil, err
- }
- return body, nil
- }
- // 关闭 SIM 卡
- func CloseSim(iccid []string) (*grequests.Response, error) {
- type CloseSim struct {
- Accounts string `json:"accounts"`
- }
- var iccids []CloseSim
- for _, v := range iccid {
- iccids = append(iccids, CloseSim{Accounts: v})
- }
- ro := &grequests.RequestOptions{
- JSON: iccids,
- Headers: GetHeader(),
- }
- body, err := grequests.Put(APP_HOST+"/scc/v1/close-accounts", ro)
- if err != nil {
- global.App.Log.Error("发送请求时出现错误: " + err.Error())
- return nil, err
- }
- return body, nil
- }
- // 1、package:充值套餐,详细规则如下:
- // 1.1 若 SIM 未绑定传入的 productId, 则将 productId 与
- // SIM 绑定。流量 = productId 的流量、剩余流量=流量、有
- // 效天数 = productId 的天数;
- // 1.2 若 SIM 卡已绑定传入的 productId,则删除之,然后重
- // 复 1.1 步骤。
- // 2、days:充值天数,详细规则如下:
- // 2.1 若 SIM 卡未绑传入的 productId,则将 productId 与
- // SIM 绑定。流量 = productId 的流量、剩余流量=流量、有
- // 效天数 = num;
- // 2.2 若 SIM 卡已绑定传入的 productId,则新增之,然后重
- // 复 2.1 步骤。
- // 3、data: 充值流量(单位:MB),详细规则如下:
- // 3.1 若 SIM 卡未绑定传入的 productId,则将 productId 与
- // SIM 绑定。流量=num 参数值、剩余流量=总流量、有效天
- // 数=productId 的天数;
- // 3.2 若 SIM 卡已绑定传入的 productId,则新增之,然后重
- // 复 3.1 步骤。
- // 4、package_data: 充值套餐的流量,详细规则如下:
- // 4.1 若 SIM 卡未绑定传入的 productId,则将 productId 与
- // SIM 绑定;
- // 4.2 若 SIM 卡已绑定传入的 productId,则新增之,然后重
- // 复 4.1 步骤。
- // 5、package_data_time: 充值套餐的流量并延长有效期,详细
- // 规则如下: 5.1 若 SIM 卡未绑定传入的 productId,则将 productId 与
- // SIM 绑定。
- // 5.2 若 SIM 卡已绑定传入的 productId,则新增之,然后重
- // 复 5.1 步骤。
- // 6、package_data_reset_time: 充值套餐,详细规则如下:
- // 6.1 若 SIM 未绑定传入的 productId, 则将 productId 与
- // SIM 绑定。流量 = productId 的流量、剩余流量=流量、有
- // 效天数 = productId 的天数。
- // 6.2 若 SIM 卡已绑定传入的 productId,则新增之,然后重
- // 复 6.1 步骤。
- // 充值 SIM 卡-- 待完善
- type RechargeSimPackage struct {
- Iccid string // iccid
- Type string // 套餐类型
- ProductId int // 套餐id
- Num string // 套餐数量
- }
- func RechargeSim(opts RechargeSimPackage) (*grequests.Response, error) {
- ro := &grequests.RequestOptions{
- JSON: map[string]interface{}{
- "account": opts.Iccid,
- "type": opts.Type,
- "productId": opts.ProductId,
- "num": opts.Num,
- },
- Headers: GetHeader(),
- }
- body, err := grequests.Post(APP_HOST+"/scc/v1/top-up/"+opts.Iccid, ro)
- if err != nil {
- global.App.Log.Error("发送请求时出现错误: " + err.Error())
- return nil, err
- }
- return body, nil
- }
- // CDR 统计--待完善
- // groupBy string 必选 分 组 标 识 , 可 选 值 : ‘ZONE’ 、 ‘PRODUCT 、
- // ‘PRODUCT_ZONE’
- // startMonth string 必选 开始月份,如 2020-07
- // endMonth string 必选 结束月份,如 2020-07
- func GetSimCdr(iccid string) (*grequests.Response, error) {
- ro := &grequests.RequestOptions{
- JSON: map[string]interface{}{
- "account": iccid,
- },
- Headers: GetHeader(),
- }
- body, err := grequests.Post(APP_HOST+"/scc/v1/cdr-stat", ro)
- if err != nil {
- global.App.Log.Error("发送请求时出现错误: " + err.Error())
- return nil, err
- }
- return body, nil
- }
- // 暂停 SIM 卡服务
- func PauseSim(iccid string) (*grequests.Response, error) {
- ro := &grequests.RequestOptions{
- JSON: map[string]interface{}{"account": iccid},
- Headers: GetHeader(),
- }
- body, err := grequests.Post(APP_HOST+"/scc/v1/suspend-account", ro)
- if err != nil {
- global.App.Log.Error("发送请求时出现错误: " + err.Error())
- return nil, err
- }
- return body, nil
- }
- // 恢复 SIM 卡服务
- func ResumeSim(iccid string) (*grequests.Response, error) {
- ro := &grequests.RequestOptions{
- JSON: map[string]interface{}{"account": iccid},
- Headers: GetHeader(),
- }
- body, err := grequests.Post(APP_HOST+"/scc/v1/restore-account", ro)
- if err != nil {
- global.App.Log.Error("发送请求时出现错误: " + err.Error())
- return nil, err
- }
- return body, nil
- }
- // eSIM 订购
- // productId int 必选 产品ID
- // tId string 必选 唯一交易号
- func GetSimSetOrder(productId int, tId string) (*grequests.Response, error) {
- ro := &grequests.RequestOptions{
- JSON: map[string]interface{}{
- "productId": productId,
- "tId": tId,
- },
- Headers: GetHeader(),
- }
- body, err := grequests.Post(APP_HOST+"/scc/v1/purchase-esim", ro)
- if err != nil {
- global.App.Log.Error("发送请求时出现错误: " + err.Error())
- return nil, err
- }
- return body, nil
- }
- // eSIM 订购查询
- func GetSimSetOrderQuery(tId string) (*grequests.Response, error) {
- ro := &grequests.RequestOptions{
- JSON: map[string]interface{}{"tId": tId},
- Headers: GetHeader(),
- }
- body, err := grequests.Get(APP_HOST+"/scc/v1/purchase-esim-query", ro)
- if err != nil {
- global.App.Log.Error("发送请求时出现错误: " + err.Error())
- return nil, err
- }
- return body, nil
- }
- // 查询 eSIM 安装状态
- func GetSimSetOrderStatus(tId string) (*grequests.Response, error) {
- ro := &grequests.RequestOptions{
- Params: map[string]string{"tId": tId},
- Headers: GetHeader(),
- }
- body, err := grequests.Get(APP_HOST+"/scc/v1/esim-installation-status", ro)
- if err != nil {
- global.App.Log.Error("发送请求时出现错误: " + err.Error())
- return nil, err
- }
- return body, nil
- }
- // CDR 详单查询
- // account string 必选 Sim 账户(卡号)
- // startDate string 必选 开始日期:如 2024-09-29
- // endDate string 必选 结束日期:如 2024-09-30
- func GetSimCdrDetail(iccid string, startDate, endDate string) (*grequests.Response, error) {
- ro := &grequests.RequestOptions{
- Params: map[string]string{
- "account": iccid,
- "startDate": startDate,
- "endDate": endDate,
- },
- Headers: GetHeader(),
- }
- body, err := grequests.Get(APP_HOST+"/scc/v1/cdr-daily", ro)
- if err != nil {
- global.App.Log.Error("发送请求时出现错误: " + err.Error())
- return nil, err
- }
- return body, nil
- }
- // 套餐激活通知(需提供域名)- 待完善
|