Explorar el Código

search lead with a specific openID is implemented and tested.

master
Patrick Peng Sun hace 8 años
padre
commit
65784b83fa
Se han modificado 2 ficheros con 88 adiciones y 3 borrados
  1. +68
    -1
      crmLead.go
  2. +20
    -2
      crmLead_test.go

+ 68
- 1
crmLead.go Ver fichero

@@ -1,6 +1,12 @@
package main

import "time"
import (
"encoding/json"
"io/ioutil"
"log"
"net/http"
"time"
)

type crmLeadInfo struct {
ID string `json:"id"`
@@ -88,3 +94,64 @@ func (m *crmLeadInfo) setModifiedAt(v time.Time) string {
func (m *crmLeadInfo) getTimeLayout() string {
return "2006-01-02 15:04:05"
}

func crmFindOpenID(openID string) (info crmLeadInfo, found bool, err error) {
found = false
req, err := http.NewRequest("GET", "https://c.hitxy.org.au/api/v1/Lead", nil)
if err != nil {
log.Println("crmGetRecord: cannot form good http Request")
log.Print(err)
return
}

//auth header
req.Header.Set("Authorization", crmAuthHeader())
req.Header.Set("Accept", "application/json, text/javascript, */*; q=0.01")
req.Header.Set("Content-Type", "application/json")

//query string
q := req.URL.Query()
q.Add("maxSize", "20")
q.Add("maxSize", "0")
q.Add("sortBy", "createdAt")
q.Add("asc", "false")
q.Add("where[0][type]", "equals")
q.Add("where[0][attribute]", "wechat_hitxy_id")
q.Add("where[0][value]", openID)
req.URL.RawQuery = q.Encode()

// dump, err := httputil.DumpRequest(req, true)
// if err != nil {
// log.Fatal(err)
// }
// fmt.Printf("dump : %q", dump)

client := &http.Client{}
r, err := client.Do(req)

if err != nil {
return
}
defer r.Body.Close()

b, _ := ioutil.ReadAll(r.Body)
search := crmSearchLead{}
err = json.Unmarshal(b, &search)

if err != nil || search.Total <= 0 {
return
}

if search.Total > 1 {
log.Printf("ERROR It's wrong to have multiple record for same wechat id %s", openID)
for _, v := range search.List {
log.Println(v)
}
return
}

//we successfully reach here
info = search.List[0]
found = true
return
}

+ 20
- 2
crmLead_test.go Ver fichero

@@ -56,7 +56,7 @@ func TestDecodeLeadInfo(t *testing.T) {

r := crmLeadInfo{}
err := json.Unmarshal([]byte(msg), &r)
log.Println(r)
//log.Println(r)
AssertEqual(t, err, nil, "Decode CRM Lead Json shold be correct")

AssertEqual(t, r.ID, "58f4aa0682ea74bb8", "ID mismatch ")
@@ -204,7 +204,7 @@ func TestCrmLeadInfoByCompleteInfo(t *testing.T) {
}`
r := crmLeadInfo{}
err := json.Unmarshal([]byte(msg), &r)
log.Println(r)
//log.Println(r)
AssertEqual(t, err, nil, "")

AssertEqual(t, r.ID, "58f4aa0682ea74bb8", "ID mismatch ")
@@ -378,4 +378,22 @@ func TestSearchResult(t *testing.T) {
AssertEqual(t, len(r.List), 2, "")
AssertEqual(t, r.List[0].ID, "58f4aa0682ea74bb8", "")
AssertEqual(t, r.List[1].ID, "58f4a849502da6f33", "")
AssertEqual(t, r.List[1].AssignedUserName, "Admin", "")
}

func TestSearchResultZero(t *testing.T) {
msg := `{"total":0,"list":[]}`
r := crmSearchLead{}
err := json.Unmarshal([]byte(msg), &r)
AssertEqual(t, err, nil, "")
AssertEqual(t, r.Total, 0, "")
AssertEqual(t, len(r.List), 0, "")
}

func TestFindOpenIDOnline(t *testing.T) {
SetupConfig()
info, found, err := crmFindOpenID("weid1")
log.Println(info)
log.Println(found)
log.Println(err)
}

Cargando…
Cancelar
Guardar