Bladeren bron

crm query information structure json test finished.

master
Patrick Peng Sun 8 jaren geleden
bovenliggende
commit
d01652f648
12 gewijzigde bestanden met toevoegingen van 15867 en 21 verwijderingen
  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 Bestand weergeven

@@ -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 Bestand weergeven

@@ -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 Bestand weergeven

@@ -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 Bestand weergeven

@@ -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
Diff onderdrukt omdat het te groot bestand
Bestand weergeven


+ 756
- 0
sample_data/crmhar/search-ldea.har
Diff onderdrukt omdat het te groot bestand
Bestand weergeven


+ 1127
- 0
sample_data/crmhar/search-lead-Archive 17-06-04 14-01-27.har
Diff onderdrukt omdat het te groot bestand
Bestand weergeven


+ 1031
- 0
sample_data/crmhar/search-lead-by-wechat-id-c.hitxy.org.au.har
Diff onderdrukt omdat het te groot bestand
Bestand weergeven


+ 1528
- 0
sample_data/crmhar/upload-头像.har
Diff onderdrukt omdat het te groot bestand
Bestand weergeven


+ 7465
- 0
sample_data/crmhar/view-specific-lead.har
Diff onderdrukt omdat het te groot bestand
Bestand weergeven


+ 330
- 0
sample_data/crmhar/上传照片-192.168.1.39.har
Diff onderdrukt omdat het te groot bestand
Bestand weergeven


+ 53
- 0
sample_data/sample_crm_lead_query.json Bestand weergeven

@@ -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
}
]
}



Laden…
Annuleren
Opslaan