Bläddra i källkod

fix:edit whatsapp/list

jimmyyem 2 månader sedan
förälder
incheckning
56829dbf7d

+ 17 - 8
desc/wechat/whatsapp.api

@@ -30,10 +30,19 @@ type (
 		PhoneName  *string `json:"phoneName,optional"`
 
 		// 号码状态
-		PhoneStatus  *int8 `json:"phoneStatus,optional"`
+		PhoneStatus  *string `json:"phoneStatus,optional"`
 	
 		Tokens *uint64 `json:"tokens,optional"`
-		Frequency *uint64 `json:"frequency,optional"`
+		Frequency *string `json:"frequency,optional"`
+
+		// 号码质量
+		Quality *string `json:"quality,optional"`
+
+		// 号码校验状态
+		VerifyStatus *string `json:"verifyStatus,optional"`
+
+		// 号码发送频率
+		MessagingLimitTier *string `json:"messagingLimitTier,optional"`
 
         // 机构 ID 
         OrganizationId  *uint64 `json:"organizationId,optional"`
@@ -92,14 +101,14 @@ type (
     WhatsappListReq {
         PageInfo
 
-        // ak 
-        Ak  *string `json:"ak,optional"`
+		// 手机号
+		Phone  *string `json:"phone,optional"`
 
-        // 端口号 
-        Sk  *string `json:"sk,optional"`
+		// 号码名称
+		PhoneName  *string `json:"phoneName,optional"`
 
-        // 回调地址 
-        Callback  *string `json:"callback,optional"`
+		WaId  *string `json:"waId,optional"`
+		OrganizationId  *uint64 `json:"organizationId,optional"`
     }
 
     // Whatsapp information response | Whatsapp信息返回体

+ 19 - 0
hook/aliyun/whatsapp.go

@@ -354,3 +354,22 @@ func DeRegisterCamsPhoneNumber(phone, custSpaceId string) (*cams20200606.Chatapp
 
 	return response, nil
 }
+
+// QueryCamsChatappPhoneNumbers 查询客户下的所有发送号码及号码状态
+func QueryCamsChatappPhoneNumbers(custSpaceId string) (*cams20200606.QueryChatappPhoneNumbersResponse, error) {
+	client, _err := CreateCamsClient()
+	if _err != nil {
+		return nil, _err
+	}
+
+	request := &cams20200606.QueryChatappPhoneNumbersRequest{
+		CustSpaceId: tea.String(custSpaceId),
+	}
+
+	response, _err := client.QueryChatappPhoneNumbers(request)
+	if _err != nil {
+		return nil, _err
+	}
+
+	return response, nil
+}

+ 0 - 1
internal/logic/whatsapp/create_whatsapp_logic.go

@@ -46,7 +46,6 @@ func (l *CreateWhatsappLogic) CreateWhatsapp(req *types.WhatsappInfo) (*types.Ba
 				SetNotNilPhone(req.Phone).
 				SetNotNilCc(req.Cc).
 				SetNotNilPhoneName(req.PhoneName).
-				SetNotNilPhoneStatus(req.PhoneStatus).
 				SetNotNilOrganizationID(req.OrganizationId).
 				//SetNotNilAgentID(req.AgentId).
 				//SetNotNilAPIBase(req.ApiBase).

+ 0 - 1
internal/logic/whatsapp/get_whatsapp_by_id_logic.go

@@ -78,7 +78,6 @@ func (l *GetWhatsappByIdLogic) GetWhatsappById(req *types.IDReq) (*types.Whatsap
 			Phone:            &data.Phone,
 			Cc:               &data.Cc,
 			PhoneName:        &data.PhoneName,
-			PhoneStatus:      &data.PhoneStatus,
 			OrganizationId:   &data.OrganizationID,
 			OrganizationName: &organizationName,
 			AgentId:          &data.AgentID,

+ 37 - 3
internal/logic/whatsapp/get_whatsapp_list_logic.go

@@ -3,6 +3,8 @@ package whatsapp
 import (
 	"context"
 	"github.com/suyuan32/simple-admin-core/rpc/types/core"
+	"github.com/zeromicro/go-zero/core/errorx"
+	"wechat-api/hook/aliyun"
 
 	"wechat-api/ent/predicate"
 	"wechat-api/ent/whatsapp"
@@ -32,9 +34,21 @@ func NewGetWhatsappListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *G
 
 func (l *GetWhatsappListLogic) GetWhatsappList(req *types.WhatsappListReq) (*types.WhatsappListResp, error) {
 	var predicates []predicate.Whatsapp
-	if req.Callback != nil {
-		predicates = append(predicates, whatsapp.CallbackContains(*req.Callback))
+	if req.OrganizationId != nil {
+		predicates = append(predicates, whatsapp.OrganizationID(*req.OrganizationId))
 	}
+	if req.Phone != nil {
+		predicates = append(predicates, whatsapp.Phone(*req.Phone))
+	}
+	if req.PhoneName != nil {
+		predicates = append(predicates, whatsapp.PhoneName(*req.PhoneName))
+	}
+	if req.WaId != nil && *req.WaId != "" {
+		predicates = append(predicates, whatsapp.WaID(*req.WaId))
+	} else {
+		return nil, errorx.NewInvalidArgumentError("通道ID不能为空")
+	}
+
 	data, err := l.svcCtx.DB.Whatsapp.Query().Where(predicates...).WithAgent().Page(l.ctx, req.Page, req.PageSize)
 
 	if err != nil {
@@ -45,6 +59,11 @@ func (l *GetWhatsappListLogic) GetWhatsappList(req *types.WhatsappListReq) (*typ
 	resp.Msg = errormsg.Success
 	resp.Data.Total = data.PageDetails.Total
 
+	result, err := aliyun.QueryCamsChatappPhoneNumbers(*req.WaId)
+	l.Logger.Infof("result=%v err=%v\n", result, err)
+
+	phoneNumbers := result.Body.PhoneNumbers
+
 	for _, v := range data.List {
 		organizationName := ""
 		if v.OrganizationID > 0 {
@@ -72,6 +91,18 @@ func (l *GetWhatsappListLogic) GetWhatsappList(req *types.WhatsappListReq) (*typ
 			}
 		}
 
+		var phoneStatus, quality, verifyStatus, frequency string
+		currentPhone := v.Cc + v.Phone
+		for _, v := range phoneNumbers {
+			if *v.PhoneNumber == currentPhone {
+				phoneStatus = *v.Status
+				verifyStatus = *v.CodeVerificationStatus
+				quality = *v.QualityRating
+				frequency = *v.MessagingLimitTier
+				break
+			}
+		}
+
 		resp.Data.Data = append(resp.Data.Data,
 			types.WhatsappInfo{
 				BaseIDInfo: types.BaseIDInfo{
@@ -85,7 +116,10 @@ func (l *GetWhatsappListLogic) GetWhatsappList(req *types.WhatsappListReq) (*typ
 				Phone:            &v.Phone,
 				Cc:               &v.Cc,
 				PhoneName:        &v.PhoneName,
-				PhoneStatus:      &v.PhoneStatus,
+				PhoneStatus:      &phoneStatus,
+				Quality:          &quality,
+				VerifyStatus:     &verifyStatus,
+				Frequency:        &frequency,
 				OrganizationId:   &v.OrganizationID,
 				OrganizationName: &organizationName,
 				AgentId:          &v.AgentID,

+ 14 - 8
internal/types/types.go

@@ -3429,9 +3429,15 @@ type WhatsappInfo struct {
 	// 号码名称
 	PhoneName *string `json:"phoneName,optional"`
 	// 号码状态
-	PhoneStatus *int8   `json:"phoneStatus,optional"`
+	PhoneStatus *string `json:"phoneStatus,optional"`
 	Tokens      *uint64 `json:"tokens,optional"`
-	Frequency   *uint64 `json:"frequency,optional"`
+	Frequency   *string `json:"frequency,optional"`
+	// 号码质量
+	Quality *string `json:"quality,optional"`
+	// 号码校验状态
+	VerifyStatus *string `json:"verifyStatus,optional"`
+	// 号码发送频率
+	MessagingLimitTier *string `json:"messagingLimitTier,optional"`
 	// 机构 ID
 	OrganizationId   *uint64 `json:"organizationId,optional"`
 	OrganizationName *string `json:"organizationName,optional"`
@@ -3479,12 +3485,12 @@ type WhatsappListInfo struct {
 // swagger:model WhatsappListReq
 type WhatsappListReq struct {
 	PageInfo
-	// ak
-	Ak *string `json:"ak,optional"`
-	// 端口
-	Sk *string `json:"sk,optional"`
-	// 回调地址
-	Callback *string `json:"callback,optional"`
+	// 手机号
+	Phone *string `json:"phone,optional"`
+	// 号码名称
+	PhoneName      *string `json:"phoneName,optional"`
+	WaId           *string `json:"waId,optional"`
+	OrganizationId *uint64 `json:"organizationId,optional"`
 }
 
 // Whatsapp information response | Whatsapp信息返回体