소스 검색

crm query information structure json test finished.

master
Patrick Peng Sun 8 년 전
부모
커밋
d01652f648
12개의 변경된 파일15867개의 추가작업 그리고 21개의 파일을 삭제
  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 파일 보기

@@ -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 파일 보기

@@ -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 파일 보기

@@ -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 파일 보기

@@ -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
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
파일 보기


+ 756
- 0
sample_data/crmhar/search-ldea.har
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
파일 보기


+ 1127
- 0
sample_data/crmhar/search-lead-Archive 17-06-04 14-01-27.har
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
파일 보기


+ 1031
- 0
sample_data/crmhar/search-lead-by-wechat-id-c.hitxy.org.au.har
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
파일 보기


+ 1528
- 0
sample_data/crmhar/upload-头像.har
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
파일 보기


+ 7465
- 0
sample_data/crmhar/view-specific-lead.har
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
파일 보기


+ 330
- 0
sample_data/crmhar/上传照片-192.168.1.39.har
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
파일 보기


+ 53
- 0
sample_data/sample_crm_lead_query.json 파일 보기

@@ -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…
취소
저장