Selaa lähdekoodia

crm query information structure json test finished.

master
Patrick Peng Sun 8 vuotta sitten
vanhempi
commit
d01652f648
12 muutettua tiedostoa jossa 15867 lisäystä ja 21 poistoa
  1. +90
    -0
      crmLead.go
  2. +381
    -0
      crmLead_test.go
  3. +2
    -21
      eventSubscribe.go
  4. +97
    -0
      sample_data/crm_view_lead.json
  5. +3007
    -0
      sample_data/crmhar/save-lead.har
  6. +756
    -0
      sample_data/crmhar/search-ldea.har
  7. +1127
    -0
      sample_data/crmhar/search-lead-Archive 17-06-04 14-01-27.har
  8. +1031
    -0
      sample_data/crmhar/search-lead-by-wechat-id-c.hitxy.org.au.har
  9. +1528
    -0
      sample_data/crmhar/upload-头像.har
  10. +7465
    -0
      sample_data/crmhar/view-specific-lead.har
  11. +330
    -0
      sample_data/crmhar/上传照片-192.168.1.39.har
  12. +53
    -0
      sample_data/sample_crm_lead_query.json

+ 90
- 0
crmLead.go Näytä tiedosto

@@ -0,0 +1,90 @@
package main

import "time"

type crmLeadInfo struct {
ID string `json:"id"`
Name string `json:"name,omitempty"`
Deleted bool `json:"deleted,omitempty"`
SalutationName string `json:"salutationName,omitempty"`
FirstName string `json:"firstName,omitempty"`
LastName string `json:"lastName,omitempty"`
Title string `json:"title,omitempty"`
Status string `json:"status,omitempty"`
Source string `json:"source,omitempty"`
Industry string `json:"industry,omitempty"`
OpportunityAmount int `json:"opportunityAmount,omitempty"`
Website string `json:"website,omitempty"`
AddressStreet string `json:"addressStreet,omitempty"`
AddressCity string `json:"addressCity,omitempty"`
AddressState string `json:"addressState,omitempty"`
AddressCountry string `json:"addressCountry,omitempty"`
AddressPostalCode string `json:"addresPostalCode,omitempty"`
EmailAddress string `json:"emailAddress,omitempty"`
PhoneNumber string `json:"phoneNumber,omitempty"`
DoNotCall bool `json:"doNotCall,omitempty"`
Description string `json:"description,omitempty"`
CreatedAt string `json:"createdAt,omitempty"`
ModifiedAt string `json:"ModifiedAt,omitempty"`
AccountName string `json:"accountName,omitempty"`
Password string `json:"password,omitempty"`
WechatHitxyID string `json:"wechat_hitxy_id,omitempty"`
Verifier []string `json:"verifier,omitempty"`
OpportunityAmountCurrency string `json:"opportunityAmountCurrency,omitempty"`
OpportunityAmountConverted int `json:"opportunityAmountConverted,omitempty"`
EmailAddressData []struct {
EmailAddress string `json:"emailAddress,omitempty"`
Lower string `json:"lower,omitempty"`
Primary bool `json:"primary,omitempty"`
OptOut bool `json:"optOut,omitempty"`
Invalid bool `json:"invalid,omitempty"`
} `json:"emailAddressData,omitempty"`
PhoneNumberData []struct {
PhoneNumber string `json:"phoneNumber,omitempty"`
Primary bool `json:"primary,omitempty"`
Type string `json:"type,omitempty"`
} `json:"phoneNumberData,omitempty"`
CreatedByID string `json:"createdById,omitempty"`
CreatedByName string `json:"createdByName,omitempty"`
ModifiedByID string `json:"modifiedById,omitempty"`
ModifiedByName string `json:"modifiedByName,omitempty"`
AssignedUserID string `json:"assignedUserId,omitempty"`
AssignedUserName string `json:"assignedUserName,omitempty"`
CampaignID string `json:"campaignId,omitempty"`
CreatedAccountID string `json:"createdAccountId,omitempty"`
CreatedContactID string `json:"createdContactId,omitempty"`
CreatedOpportunityID string `json:"createdOpportunityId,omitempty"`
}

type crmSearchLead struct {
Total int `json:"total"`
List []crmLeadInfo `json:"list"`
}

func (m *crmLeadInfo) getCreatedAt() (r time.Time) {
layout := m.getTimeLayout()
r, _ = time.Parse(layout, m.CreatedAt)
return
}

func (m *crmLeadInfo) setCreatedAt(v time.Time) string {
layout := m.getTimeLayout()
m.CreatedAt = v.Format(layout)
return m.CreatedAt
}

func (m *crmLeadInfo) getModifiedAt() (r time.Time) {
layout := m.getTimeLayout()
r, _ = time.Parse(layout, m.ModifiedAt)
return
}

func (m *crmLeadInfo) setModifiedAt(v time.Time) string {
layout := m.getTimeLayout()
m.ModifiedAt = v.Format(layout)
return m.ModifiedAt
}

func (m *crmLeadInfo) getTimeLayout() string {
return "2006-01-02 15:04:05"
}

+ 381
- 0
crmLead_test.go Näytä tiedosto

@@ -0,0 +1,381 @@
package main

import (
"encoding/json"
"log"
"testing"
)

func TestDecodeLeadInfo(t *testing.T) {
msg := `{
"id": "58f4aa0682ea74bb8",
"name": "same email",
"deleted": false,
"salutationName": "Mr",
"firstName": "same",
"lastName": "email",
"title": "title",
"status": "New",
"source": "",
"industry": "",
"opportunityAmount": null,
"website": "",
"addressStreet": "",
"addressCity": "",
"addressState": "",
"addressCountry": "",
"addressPostalCode": "",
"emailAddress": "test@gmail.com",
"phoneNumber": "456",
"doNotCall": false,
"description": "",
"createdAt": "2017-04-17 11:41:58",
"modifiedAt": "2017-04-18 04:41:06",
"accountName": "",
"password": "abcdefg",
"wechat_hitxy_id": "the user id obtained from wechat public account",
"verifier": [
"231823091",
"adkdaifaskfsafsa",
"394kfdjafdsa",
"39410498321041"
],
"opportunityAmountCurrency": null,
"opportunityAmountConverted": null,
"createdById": "1",
"createdByName": "Admin",
"modifiedById": "58ef420cac3cf6c95",
"modifiedByName": "wechat robot",
"assignedUserId": "1",
"assignedUserName": "Admin",
"campaignId": null,
"createdAccountId": null,
"createdContactId": null,
"createdOpportunityId": null
}`

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

AssertEqual(t, r.ID, "58f4aa0682ea74bb8", "ID mismatch ")
AssertEqual(t, r.Name, "same email", "Name mismatch")
AssertEqual(t, r.Deleted, false, "")
AssertEqual(t, r.SalutationName, "Mr", "")
AssertEqual(t, r.FirstName, "same", "")
AssertEqual(t, r.LastName, "email", "")
AssertEqual(t, r.Title, "title", "")
AssertEqual(t, r.Status, "New", "")
AssertEqual(t, r.Source, "", "")
AssertEqual(t, r.Industry, "", "")
AssertEqual(t, r.OpportunityAmount, 0, "")
AssertEqual(t, r.Website, "", "")
AssertEqual(t, r.AddressStreet, "", "")
AssertEqual(t, r.AddressCity, "", "")
AssertEqual(t, r.AddressState, "", "")
AssertEqual(t, r.AddressCountry, "", "")
AssertEqual(t, r.AddressPostalCode, "", "")
AssertEqual(t, r.EmailAddress, "test@gmail.com", "")
AssertEqual(t, r.PhoneNumber, "456", "")
AssertEqual(t, r.DoNotCall, false, "")
AssertEqual(t, r.Description, "", "")
AssertEqual(t, r.CreatedAt, "2017-04-17 11:41:58", "")
AssertEqual(t, r.ModifiedAt, "2017-04-18 04:41:06", "")
AssertEqual(t, r.AccountName, "", "")
AssertEqual(t, r.Password, "abcdefg", "")
AssertEqual(t, r.WechatHitxyID, "the user id obtained from wechat public account", "")
AssertEqual(t, r.Verifier[0], "231823091", "")
AssertEqual(t, r.Verifier[1], "adkdaifaskfsafsa", "")
AssertEqual(t, r.Verifier[2], "394kfdjafdsa", "")
AssertEqual(t, r.Verifier[3], "39410498321041", "")
AssertEqual(t, r.OpportunityAmountCurrency, "", "")
AssertEqual(t, r.OpportunityAmountConverted, 0, "")
AssertEqual(t, r.CreatedByID, "1", "")
AssertEqual(t, r.CreatedByName, "Admin", "")
AssertEqual(t, r.ModifiedByID, "58ef420cac3cf6c95", "")
AssertEqual(t, r.ModifiedByName, "wechat robot", "")
AssertEqual(t, r.AssignedUserID, "1", "")
AssertEqual(t, r.AssignedUserName, "Admin", "")
AssertEqual(t, r.CampaignID, "", "")
AssertEqual(t, r.CreatedAccountID, "", "")
AssertEqual(t, r.CreatedContactID, "", "")
AssertEqual(t, r.CreatedOpportunityID, "", "")

}

func TestCrmLeadInfoByCompleteInfo(t *testing.T) {
msg := `{
"id": "58f4aa0682ea74bb8",
"name": "same email",
"deleted": false,
"salutationName": "",
"firstName": "same",
"lastName": "email",
"title": "",
"status": "New",
"source": "",
"industry": "",
"opportunityAmount": 120,
"website": "",
"addressStreet": "",
"addressCity": "",
"addressState": "",
"addressCountry": "",
"addressPostalCode": "",
"emailAddress": "test@gmail.com",
"phoneNumber": "456",
"doNotCall": false,
"description": "",
"createdAt": "2017-04-17 11:41:58",
"modifiedAt": "2017-06-04 04:08:16",
"accountName": "",
"password": "abcdefg",
"wechat_hitxy_id": "the user id obtained from wechat public account",
"verifier": [
"231823091",
"adkdaifaskfsafsa",
"394kfdjafdsa",
"39410498321041"
],
"opportunityAmountCurrency": "AUD",
"opportunityAmountConverted": 120,
"emailAddressData": [
{
"emailAddress": "test@gmail.com",
"lower": "test@gmail.com",
"primary": true,
"optOut": false,
"invalid": false
},
{
"emailAddress": "abc@hotmail.com",
"lower": "abc@hotmail.com",
"primary": false,
"optOut": false,
"invalid": false
},
{
"emailAddress": "def@jjx.com.au",
"lower": "def@jjx.com.au",
"primary": false,
"optOut": false,
"invalid": false
}
],
"phoneNumberData": [
{
"phoneNumber": "456",
"primary": true,
"type": "Home"
},
{
"phoneNumber": "123",
"primary": false,
"type": "Mobile"
}
],
"createdById": "1",
"createdByName": "Admin",
"modifiedById": "1",
"modifiedByName": "Admin",
"assignedUserId": "1",
"assignedUserName": "Admin",
"teamsIds": [],
"teamsNames": {},
"campaignId": null,
"campaignName": null,
"createdAccountId": null,
"createdAccountName": null,
"createdContactId": null,
"createdContactName": null,
"createdOpportunityId": null,
"createdOpportunityName": null,
"imagesIds": [],
"imagesNames": {},
"isFollowed": true,
"followersIds": [
"1"
],
"followersNames": {
"1": "Admin"
},
"imagesTypes": {}
}`
r := crmLeadInfo{}
err := json.Unmarshal([]byte(msg), &r)
log.Println(r)
AssertEqual(t, err, nil, "")

AssertEqual(t, r.ID, "58f4aa0682ea74bb8", "ID mismatch ")
AssertEqual(t, r.Name, "same email", "Name mismatch")
AssertEqual(t, r.Deleted, false, "")
AssertEqual(t, r.SalutationName, "", "")
AssertEqual(t, r.FirstName, "same", "")
AssertEqual(t, r.LastName, "email", "")
AssertEqual(t, r.Title, "", "")
AssertEqual(t, r.Status, "New", "")
AssertEqual(t, r.Source, "", "")
AssertEqual(t, r.Industry, "", "")
AssertEqual(t, r.OpportunityAmount, 120, "")
AssertEqual(t, r.Website, "", "")
AssertEqual(t, r.AddressStreet, "", "")
AssertEqual(t, r.AddressCity, "", "")
AssertEqual(t, r.AddressState, "", "")
AssertEqual(t, r.AddressCountry, "", "")
AssertEqual(t, r.AddressPostalCode, "", "")
AssertEqual(t, r.EmailAddress, "test@gmail.com", "")
AssertEqual(t, r.PhoneNumber, "456", "")
AssertEqual(t, r.DoNotCall, false, "")
AssertEqual(t, r.Description, "", "")
AssertEqual(t, r.CreatedAt, "2017-04-17 11:41:58", "")
AssertEqual(t, r.ModifiedAt, "2017-06-04 04:08:16", "")
AssertEqual(t, r.AccountName, "", "")
AssertEqual(t, r.Password, "abcdefg", "")
AssertEqual(t, r.WechatHitxyID, "the user id obtained from wechat public account", "")
AssertEqual(t, r.Verifier[0], "231823091", "")
AssertEqual(t, r.Verifier[1], "adkdaifaskfsafsa", "")
AssertEqual(t, r.Verifier[2], "394kfdjafdsa", "")
AssertEqual(t, r.Verifier[3], "39410498321041", "")
AssertEqual(t, r.OpportunityAmountCurrency, "AUD", "")
AssertEqual(t, r.OpportunityAmountConverted, 120, "")
AssertEqual(t, r.CreatedByID, "1", "")
AssertEqual(t, r.CreatedByName, "Admin", "")
AssertEqual(t, r.ModifiedByID, "1", "")
AssertEqual(t, r.ModifiedByName, "Admin", "")
AssertEqual(t, r.AssignedUserID, "1", "")
AssertEqual(t, r.AssignedUserName, "Admin", "")
AssertEqual(t, r.CampaignID, "", "")
AssertEqual(t, r.CreatedAccountID, "", "")
AssertEqual(t, r.CreatedContactID, "", "")
AssertEqual(t, r.CreatedOpportunityID, "", "")

AssertEqual(t, r.EmailAddressData[0].EmailAddress, "test@gmail.com", "")
AssertEqual(t, r.EmailAddressData[0].Lower, "test@gmail.com", "")
AssertEqual(t, r.EmailAddressData[0].Primary, true, "")
AssertEqual(t, r.EmailAddressData[0].OptOut, false, "")
AssertEqual(t, r.EmailAddressData[0].Invalid, false, "")

AssertEqual(t, r.EmailAddressData[1].EmailAddress, "abc@hotmail.com", "")
AssertEqual(t, r.EmailAddressData[1].Lower, "abc@hotmail.com", "")
AssertEqual(t, r.EmailAddressData[1].Primary, false, "")
AssertEqual(t, r.EmailAddressData[1].OptOut, false, "")
AssertEqual(t, r.EmailAddressData[1].Invalid, false, "")

AssertEqual(t, r.EmailAddressData[2].EmailAddress, "def@jjx.com.au", "")
AssertEqual(t, r.EmailAddressData[2].Lower, "def@jjx.com.au", "")
AssertEqual(t, r.EmailAddressData[2].Primary, false, "")
AssertEqual(t, r.EmailAddressData[2].OptOut, false, "")
AssertEqual(t, r.EmailAddressData[2].Invalid, false, "")

AssertEqual(t, r.PhoneNumberData[0].PhoneNumber, "456", "")
AssertEqual(t, r.PhoneNumberData[0].Primary, true, "")
AssertEqual(t, r.PhoneNumberData[0].Type, "Home", "")

AssertEqual(t, r.PhoneNumberData[1].PhoneNumber, "123", "")
AssertEqual(t, r.PhoneNumberData[1].Primary, false, "")
AssertEqual(t, r.PhoneNumberData[1].Type, "Mobile", "")

}

func TestSearchResult(t *testing.T) {
msg := `{
"total": 2,
"list": [
{
"id": "58f4aa0682ea74bb8",
"name": "same email",
"deleted": false,
"salutationName": "",
"firstName": "same",
"lastName": "email",
"title": "",
"status": "New",
"source": "",
"industry": "",
"opportunityAmount": 120,
"website": "",
"addressStreet": "",
"addressCity": "",
"addressState": "",
"addressCountry": "",
"addressPostalCode": "",
"emailAddress": "test@gmail.com",
"phoneNumber": "456",
"doNotCall": true,
"description": "",
"createdAt": "2017-04-17 11:41:58",
"modifiedAt": "2017-06-04 06:57:48",
"accountName": "",
"password": "abcdefg",
"wechat_hitxy_id": "the user id obtained from wechat public account",
"verifier": [
"231823091",
"adkdaifaskfsafsa",
"394kfdjafdsa",
"39410498321041"
],
"opportunityAmountCurrency": "AUD",
"opportunityAmountConverted": 120,
"createdById": "1",
"createdByName": "Admin",
"modifiedById": "1",
"modifiedByName": "Admin",
"assignedUserId": "1",
"assignedUserName": "Admin",
"campaignId": null,
"createdAccountId": null,
"createdContactId": null,
"createdOpportunityId": null
},
{
"id": "58f4a849502da6f33",
"name": "not searchable",
"deleted": false,
"salutationName": "Mr.",
"firstName": "not",
"lastName": "searchable",
"title": "",
"status": "New",
"source": "",
"industry": "",
"opportunityAmount": null,
"website": "",
"addressStreet": "",
"addressCity": "",
"addressState": "",
"addressCountry": "",
"addressPostalCode": "",
"emailAddress": null,
"phoneNumber": null,
"doNotCall": false,
"description": "",
"createdAt": "2017-04-17 11:34:33",
"modifiedAt": "2017-04-18 05:09:36",
"accountName": "",
"password": null,
"wechat_hitxy_id": "the user id obtained from wechat public account",
"verifier": [],
"opportunityAmountCurrency": null,
"opportunityAmountConverted": null,
"createdById": "1",
"createdByName": "Admin",
"modifiedById": "58ef420cac3cf6c95",
"modifiedByName": "wechat robot",
"assignedUserId": "1",
"assignedUserName": "Admin",
"campaignId": null,
"createdAccountId": null,
"createdContactId": null,
"createdOpportunityId": null
}
]
}`
r := crmSearchLead{}
err := json.Unmarshal([]byte(msg), &r)
AssertEqual(t, err, nil, "")
AssertEqual(t, r.Total, 2, "")
AssertEqual(t, len(r.List), 2, "")
AssertEqual(t, r.List[0].ID, "58f4aa0682ea74bb8", "")
AssertEqual(t, r.List[1].ID, "58f4a849502da6f33", "")
}

+ 2
- 21
eventSubscribe.go Näytä tiedosto

@@ -10,30 +10,11 @@ import (

func onSubscribe(in InWechatMsg) {
openID := in.header.FromUserName
//getUser fromCRM
log.Println(openID)
}

/*
{
"subscribe": 1,
"openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
"nickname": "Band",
"sex": 1,
"language": "zh_CN",
"city": "广州",
"province": "广东",
"country": "中国",

"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
"subscribe_time": 1382694957,
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
"remark": "",

"groupid": 0,

"tagid_list":[128,2]
}
*/
//WechatUserInfo response for wechat user info.
type WechatUserInfo struct {
Subscribe int32 `json:"subscribe"`
OpenID string `json:"openid"`

+ 97
- 0
sample_data/crm_view_lead.json Näytä tiedosto

@@ -0,0 +1,97 @@
{
"id": "58f4aa0682ea74bb8",
"name": "same email",
"deleted": false,
"salutationName": "",
"firstName": "same",
"lastName": "email",
"title": "",
"status": "New",
"source": "",
"industry": "",
"opportunityAmount": 120,
"website": "",
"addressStreet": "",
"addressCity": "",
"addressState": "",
"addressCountry": "",
"addressPostalCode": "",
"emailAddress": "test@gmail.com",
"phoneNumber": "456",
"doNotCall": false,
"description": "",
"createdAt": "2017-04-17 11:41:58",
"modifiedAt": "2017-06-04 04:08:16",
"accountName": "",
"password": "abcdefg",
"wechat_hitxy_id": "the user id obtained from wechat public account",
"verifier": [
"231823091",
"adkdaifaskfsafsa",
"394kfdjafdsa",
"39410498321041"
],
"opportunityAmountCurrency": "AUD",
"opportunityAmountConverted": 120,
"emailAddressData": [
{
"emailAddress": "test@gmail.com",
"lower": "test@gmail.com",
"primary": true,
"optOut": false,
"invalid": false
},
{
"emailAddress": "abc@hotmail.com",
"lower": "abc@hotmail.com",
"primary": false,
"optOut": false,
"invalid": false
},
{
"emailAddress": "def@jjx.com.au",
"lower": "def@jjx.com.au",
"primary": false,
"optOut": false,
"invalid": false
}
],
"phoneNumberData": [
{
"phoneNumber": "456",
"primary": true,
"type": "Home"
},
{
"phoneNumber": "123",
"primary": false,
"type": "Mobile"
}
],
"createdById": "1",
"createdByName": "Admin",
"modifiedById": "1",
"modifiedByName": "Admin",
"assignedUserId": "1",
"assignedUserName": "Admin",
"teamsIds": [],
"teamsNames": {},
"campaignId": null,
"campaignName": null,
"createdAccountId": null,
"createdAccountName": null,
"createdContactId": null,
"createdContactName": null,
"createdOpportunityId": null,
"createdOpportunityName": null,
"imagesIds": [],
"imagesNames": {},
"isFollowed": true,
"followersIds": [
"1"
],
"followersNames": {
"1": "Admin"
},
"imagesTypes": {}
}

+ 3007
- 0
sample_data/crmhar/save-lead.har
File diff suppressed because it is too large
Näytä tiedosto


+ 756
- 0
sample_data/crmhar/search-ldea.har
File diff suppressed because it is too large
Näytä tiedosto


+ 1127
- 0
sample_data/crmhar/search-lead-Archive 17-06-04 14-01-27.har
File diff suppressed because it is too large
Näytä tiedosto


+ 1031
- 0
sample_data/crmhar/search-lead-by-wechat-id-c.hitxy.org.au.har
File diff suppressed because it is too large
Näytä tiedosto


+ 1528
- 0
sample_data/crmhar/upload-头像.har
File diff suppressed because it is too large
Näytä tiedosto


+ 7465
- 0
sample_data/crmhar/view-specific-lead.har
File diff suppressed because it is too large
Näytä tiedosto


+ 330
- 0
sample_data/crmhar/上传照片-192.168.1.39.har
File diff suppressed because it is too large
Näytä tiedosto


+ 53
- 0
sample_data/sample_crm_lead_query.json Näytä tiedosto

@@ -0,0 +1,53 @@
{
"total": 1,
"list": [
{
"id": "58f4aa0682ea74bb8",
"name": "same email",
"deleted": false,
"salutationName": "",
"firstName": "same",
"lastName": "email",
"title": "",
"status": "New",
"source": "",
"industry": "",
"opportunityAmount": null,
"website": "",
"addressStreet": "",
"addressCity": "",
"addressState": "",
"addressCountry": "",
"addressPostalCode": "",
"emailAddress": "test@gmail.com",
"phoneNumber": "456",
"doNotCall": false,
"description": "",
"createdAt": "2017-04-17 11:41:58",
"modifiedAt": "2017-04-18 04:41:06",
"accountName": "",
"password": "abcdefg",
"wechat_hitxy_id": "the user id obtained from wechat public account",
"verifier": [
"231823091",
"adkdaifaskfsafsa",
"394kfdjafdsa",
"39410498321041"
],
"opportunityAmountCurrency": null,
"opportunityAmountConverted": null,
"createdById": "1",
"createdByName": "Admin",
"modifiedById": "58ef420cac3cf6c95",
"modifiedByName": "wechat robot",
"assignedUserId": "1",
"assignedUserName": "Admin",
"campaignId": null,
"createdAccountId": null,
"createdContactId": null,
"createdOpportunityId": null
}
]
}



Loading…
Peruuta
Tallenna