Files
jx-callback/business/jxutils/secretNumber/secretNum.go
suyl bacb4055a9 aa
2021-09-03 17:27:21 +08:00

196 lines
5.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package secretNumber
import (
"fmt"
"git.rosy.net.cn/baseapi/utils/errlist"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals/api"
"github.com/alibabacloud-go/dyplsapi-20170525/client"
"github.com/alibabacloud-go/tea/tea"
"strings"
)
//查询线上可购号码余量
func QuerySecretNoRemain(city string) (b bool, err error) {
result, err := api.SecretNumClient.QuerySecretNoRemain(&client.QuerySecretNoRemainRequest{
SpecId: tea.Int64(1), //1虚商号码即170或171。
City: tea.String(city), //城市名
})
if err != nil {
return false, err
}
if tea.StringValue(result.Body.Code) != "OK" {
err = fmt.Errorf(tea.StringValue(result.Body.Message))
return false, err
}
if tea.Int64Value(result.Body.SecretRemainDTO.Amount) > 0 {
return true, nil
}
return false, err
}
//购买号码
func BuySecretNo(ctx *jxcontext.Context, poolKey, city string) (err error) {
result, err := api.SecretNumClient.BuySecretNo(&client.BuySecretNoRequest{
PoolKey: tea.String(poolKey),
SpecId: tea.Int64(1),
City: tea.String(city),
})
if err != nil {
return err
}
if tea.StringValue(result.Body.Code) != "OK" {
err = fmt.Errorf(tea.StringValue(result.Body.Message))
return err
}
if secretNo := tea.StringValue(result.Body.SecretBuyInfoDTO.SecretNo); secretNo != "" {
secretNumber := &model.SecretNumber{
City: city,
Number: secretNo,
PoolKey: poolKey,
}
dao.WrapAddIDCULDEntity(secretNumber, ctx.GetUserName())
err = dao.CreateEntity(dao.GetDB(), secretNumber)
}
return err
}
//绑定号码
func BindAxb(ctx *jxcontext.Context, secretNumber, numberA, numberB, expiration string) (err error) {
result, err := api.SecretNumClient.BindAxb(&client.BindAxbRequest{
PhoneNoA: tea.String(numberA),
PhoneNoB: tea.String(numberB),
PhoneNoX: tea.String(secretNumber),
Expiration: tea.String(expiration),
})
if err != nil {
return err
}
if tea.StringValue(result.Body.Code) != "OK" {
err = fmt.Errorf(tea.StringValue(result.Body.Message))
return err
}
return err
}
//查询绑定唯一标识SubsId
func QuerySubsId(poolKey, secretNumber string) (subIDs string, err error) {
result, err := api.SecretNumClient.QuerySubsId(&client.QuerySubsIdRequest{
PoolKey: tea.String(poolKey),
PhoneNoX: tea.String(secretNumber),
})
if err != nil {
return "", err
}
if tea.StringValue(result.Body.Code) != "OK" {
err = fmt.Errorf(tea.StringValue(result.Body.Message))
return "", err
}
//多个绑定关系是返回的逗号间隔的
if tea.StringValue(result.Body.SubsId) != "" {
return *result.Body.SubsId, nil
}
return "", err
}
type QuerySubscriptionDetailResult struct {
Status int `json:"status"` //该绑定关系的状态。其中0已失效。1生效中。
NumberA string `json:"numberA"`
NumberB string `json:"numberB"`
NumberX string `json:"numberX"`
GmtCreate string `json:"gmtCreate"` //绑定时间
ExpireDate string `json:"expireDate"` //绑定过期时间
SubsID string `json:"subsID"` //绑定ID
PoolKey string `json:"poolKey"`
}
//查询号码的绑定关系
func QuerySubscriptionDetail(poolKey, phoneNoX string) (querySubscriptionDetailResult []*QuerySubscriptionDetailResult, err error) {
subIDs, err := QuerySubsId(poolKey, phoneNoX)
if err != nil {
return querySubscriptionDetailResult, fmt.Errorf("查询号码绑定关系ID错误err: %v", err)
}
errList := errlist.New()
for _, v := range strings.Split(subIDs, ",") {
result, err2 := api.SecretNumClient.QuerySubscriptionDetail(&client.QuerySubscriptionDetailRequest{
PoolKey: tea.String(poolKey),
SubsId: tea.String(v),
PhoneNoX: tea.String(phoneNoX),
})
if err2 != nil {
errList.AddErr(err2)
continue
}
if tea.StringValue(result.Body.Code) != "OK" {
errList.AddErr(fmt.Errorf(tea.StringValue(result.Body.Message)))
continue
}
dto := result.Body.SecretBindDetailDTO
r := &QuerySubscriptionDetailResult{
Status: int(tea.Int64Value(dto.Status)),
NumberA: tea.StringValue(dto.PhoneNoA),
NumberB: tea.StringValue(dto.PhoneNoB),
NumberX: tea.StringValue(dto.PhoneNoX),
GmtCreate: tea.StringValue(dto.GmtCreate),
ExpireDate: tea.StringValue(dto.ExpireDate),
SubsID: v,
PoolKey: poolKey,
}
querySubscriptionDetailResult = append(querySubscriptionDetailResult, r)
}
return querySubscriptionDetailResult, err
}
//修改绑定关系
//修改哪个字段就传哪个字段
//updateNoA修改A号码。
//updateNoB修改B号码。
//updateExpire修改绑定关系有效期。
func UpdateSubscription(poolKey, subsId, phoneNoX, phoneNoA, phoneNoB, expiration string) (err error) {
params := &client.UpdateSubscriptionRequest{
PoolKey: tea.String(poolKey),
SubsId: tea.String(subsId),
PhoneNoX: tea.String(phoneNoX),
}
if phoneNoA != "" {
params.OperateType = tea.String("updateNoA")
params.PhoneNoA = tea.String(phoneNoA)
}
if phoneNoB != "" {
params.OperateType = tea.String("updateNoB")
params.PhoneNoB = tea.String(phoneNoB)
}
if expiration != "" {
params.OperateType = tea.String("updateExpire")
params.Expiration = tea.String(expiration)
}
result, err := api.SecretNumClient.UpdateSubscription(params)
if err != nil {
return err
}
if tea.StringValue(result.Body.Code) != "OK" {
err = fmt.Errorf(tea.StringValue(result.Body.Message))
return err
}
return err
}
//解除号码的绑定关系
func UnbindSubscription(poolKey, subsId, phoneNoX string) (err error) {
result, err := api.SecretNumClient.UnbindSubscription(&client.UnbindSubscriptionRequest{
PoolKey: tea.String(poolKey),
SubsId: tea.String(subsId),
SecretNo: tea.String(phoneNoX),
})
if err != nil {
return err
}
if tea.StringValue(result.Body.Code) != "OK" {
err = fmt.Errorf(tea.StringValue(result.Body.Message))
return err
}
return err
}