From be3a93d1dca7b1d3b971906b4323862a882da1e3 Mon Sep 17 00:00:00 2001 From: Patrick Peng Sun Date: Thu, 13 Jul 2017 16:25:54 +1000 Subject: [PATCH] =?UTF-8?q?=E7=A7=AF=E5=88=86=E4=BD=99=E9=A2=9D=20?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- customMenu.go | 2 +- menuClick.go | 35 +++++++++++++++++++++++++--- outTemplateMsg.go | 53 ++++++++++++++++++++++++++++++++---------- outTemplateMsg_test.go | 36 ++++++++++++++++++---------- serveCommand.go | 10 +++++--- serveEvents.go | 6 ++--- 6 files changed, 108 insertions(+), 34 deletions(-) diff --git a/customMenu.go b/customMenu.go index 5747795..9551fcd 100644 --- a/customMenu.go +++ b/customMenu.go @@ -21,7 +21,7 @@ var menu = []byte(` }, { "type":"click", - "name":"积分和账单", + "name":"积分/余额", "key": "MEMBER_CREDITS" }, { diff --git a/menuClick.go b/menuClick.go index a2ee55b..3ee5af6 100644 --- a/menuClick.go +++ b/menuClick.go @@ -1,13 +1,16 @@ package main -func onClick(in* InWechatMsg) { +import "time" + +func onClick(ss *openIDSessionData, in *InWechatMsg) { e := in.body.(EventMsg) openid := in.header.FromUserName switch e.EventKey { case "MEMBER_MYPROFILE": - kfSendTxtAs(openid, "profile", "孙鹏") + //kfSendTxtAs(openid, "profile", "孙鹏") + startProc(AllProc["用户信息"], ss, in) case "MEMBER_CREDITS": - kfSendTxtAs(openid, "没有余额", "孙鹏") + onMembeCredits(ss, in) case "MEMBER_SEARCH": kfSendTxtAs(openid, "搜索", "孙鹏") case "MEMBER_FEEDBACK": @@ -37,3 +40,29 @@ func onClick(in* InWechatMsg) { } } + +func onMembeCredits(ss *openIDSessionData, in *InWechatMsg) { + msg := ` +积分是您对校友会的贡献记录,积分越高对校友会的贡献越大,也是对所有对校友会无私奉献的一种公开认可。 + +积分可以通过校友会兑换成现金或纪念品。 + +余额是您在校友会活动中的奖金余额,根据活动内容,以现金,卡,或者礼物的形式兑现。 +` + kfSendTxtAs(ss.OpenID, msg, "孙鹏") + + info, found, err := crmFindLeadByOpenID(ss.OpenID) + + if found && err == nil { + url := "" + first := "截至" + time.Now().Format("2006-01-02 15:04:06 Mon MST -07") + " 您的积分,奖品,余额,如下\n\n" + + "积分:无" + name := info.LastName + addr := info.EmailAddress + card := info.ID + balance := "澳币 $0 " + remark := "奖品:无\n\n余额可联络财务兑现,奖品余额30过期" + "\n请确保您的姓名,地址信息正确" + templateSendAccountBalance(ss.OpenID, url, first, remark, name, addr, card, balance) + } + +} diff --git a/outTemplateMsg.go b/outTemplateMsg.go index c0a37bb..0d30bd5 100644 --- a/outTemplateMsg.go +++ b/outTemplateMsg.go @@ -24,18 +24,19 @@ type templateMsgKeyword struct { //WechatTemplates Message templates and their ID var WechatTemplates = map[string]templatesIDInfo{ - "join_community": {"12", "成功加入社群提醒", "yNKEqc7n-h1Y1DytmjUT5-H4s1zBK4nBIrYb8_jc2gM"}, - "checkin_success": {"03", "签到成功提醒", "8KZLIQnB5e0QJWTtEeSOxGKHoxMaB5T1_GA8iDSLiI4"}, - "join_volunteer": {"01", "成功加入志愿者通知", "1xgZoxZgnebXAddQ_MXSThpZt3bJ_e4XonCf2F4EETY"}, - "join_team": {"02", "团队加入成功通知", "3Jw3jdlbDOK9ggWFcDfmi2QkytSJP4YjYWrBByWT-0M"}, - "meeting_reminder": {"04", "会议通知", "8goDRUgmfxGWZgZQQCmveXqSnnqeqymIf6Rm1Ywfxsk"}, - "checking_reminder": {"05", "签到提醒", "RQ9hQLoz8DkVRowPg-RmUD3zw9pi9QsEuzDtgfHm8sc"}, - "enroll_success": {"06", "活动报名成功提醒", "S1tLShojLb9hpofSdaUAF9HNADo9gcwuWkYqkLzWPP4"}, - "memberfee_reminder": {"08", "会员缴费提醒", "i40L7lXUsUK_hSs8quTwDelbXAigOGAPxkSe23Fg8Hk"}, - "payment_successful": {"09", "缴费成功通知", "ubMQT9db4HgUCZrYiei20lr25Be3oOYT3YziOFG_PdI"}, - "checkin_failure": {"10", "签到失败提醒", "x0oZxM05A7DKKxQOt6x1AvgbKC0W1G7l2nwMy65rD0w"}, - "form_fillup_done": {"07", "录入完整提醒", "X82K3kvOhbOLmMjtKJzAhKnLUi1C0xQFab2mqs30H1k"}, - "inform_collection": {"11", "物品领取通知", "y4SUrN75QwWCmQfw2gLwgLzeTbhqrSxTm-GkxR16Pro"}, + "account_balance": {"01", "账户余额提醒", "-ahcu4myuJyf2FKW-eq7jdgwEyOeXA8wP4VzixRnUtQ"}, + "join_volunteer": {"02", "成功加入志愿者通知", "1xgZoxZgnebXAddQ_MXSThpZt3bJ_e4XonCf2F4EETY"}, + "join_team": {"03", "团队加入成功通知", "3Jw3jdlbDOK9ggWFcDfmi2QkytSJP4YjYWrBByWT-0M"}, + "checkin_success": {"04", "签到成功提醒", "8KZLIQnB5e0QJWTtEeSOxGKHoxMaB5T1_GA8iDSLiI4"}, + "meeting_reminder": {"05", "会议通知", "8goDRUgmfxGWZgZQQCmveXqSnnqeqymIf6Rm1Ywfxsk"}, + "checking_reminder": {"06", "签到提醒", "RQ9hQLoz8DkVRowPg-RmUD3zw9pi9QsEuzDtgfHm8sc"}, + "enroll_success": {"07", "活动报名成功提醒", "S1tLShojLb9hpofSdaUAF9HNADo9gcwuWkYqkLzWPP4"}, + "form_fillup_done": {"08", "录入完整提醒", "X82K3kvOhbOLmMjtKJzAhKnLUi1C0xQFab2mqs30H1k"}, + "memberfee_reminder": {"09", "会员缴费提醒", "i40L7lXUsUK_hSs8quTwDelbXAigOGAPxkSe23Fg8Hk"}, + "payment_successful": {"10", "缴费成功通知", "ubMQT9db4HgUCZrYiei20lr25Be3oOYT3YziOFG_PdI"}, + "checkin_failure": {"11", "签到失败提醒", "x0oZxM05A7DKKxQOt6x1AvgbKC0W1G7l2nwMy65rD0w"}, + "inform_collection": {"12", "物品领取通知", "y4SUrN75QwWCmQfw2gLwgLzeTbhqrSxTm-GkxR16Pro"}, + "join_community": {"13", "成功加入社群提醒", "yNKEqc7n-h1Y1DytmjUT5-H4s1zBK4nBIrYb8_jc2gM"}, } func kfSendTemplateMsg(touser, templateid, url string, data map[string]templateMsgKeyword) (resp string, err error) { @@ -355,3 +356,31 @@ func templateSendJoinCommunity(toUser, url, first, remark, communityName, joinDa data["remark"] = templateMsgKeyword{remark, "#FF0000"} return kfSendTemplateMsg(toUser, tid, url, data) } + +func templateSendAccountBalance(toUser, url, first, remark, name, addr, card, balance string) (resp string, err error) { + // {{first.DATA}} + // 户名:{{keyword1.DATA}} + // 地址:{{keyword2.DATA}} + // 卡号:{{keyword3.DATA}} + // 余额:{{keyword4.DATA}} + // {{remark.DATA}} + + // 您好,截止上月底您的便民卡余额信息如下 + // 户名:王一二 + // 地址:市南区宁夏路288号 + // 卡号:10000009 + // 余额:13.00元 + // 感谢您的使用。 + + tid := getTemplateIDByName("account_balance") + data := map[string]templateMsgKeyword{} + data["first"] = templateMsgKeyword{first, "#173177"} + data["keyword1"] = templateMsgKeyword{name, "#173177"} + data["keyword2"] = templateMsgKeyword{addr, "#173177"} + data["keyword3"] = templateMsgKeyword{card, "#173177"} + data["keyword4"] = templateMsgKeyword{balance, "#173177"} + data["remark"] = templateMsgKeyword{remark, "#FF0000"} + return kfSendTemplateMsg(toUser, tid, url, data) + + return +} diff --git a/outTemplateMsg_test.go b/outTemplateMsg_test.go index c76a759..fd96521 100644 --- a/outTemplateMsg_test.go +++ b/outTemplateMsg_test.go @@ -6,7 +6,7 @@ import ( ) func TestSendTemplateJoinVolunteer(t *testing.T) { - + url := "http://www.google.com.au/" first := "很高兴有你参加志愿者" remark := "明天给你发1万块钱" @@ -19,7 +19,7 @@ func TestSendTemplateJoinVolunteer(t *testing.T) { } func TestSendTemplateJoinTeam(t *testing.T) { - + url := "http://www.google.com.au/" first := "欢迎加入校友会服务团队" remark := "给你发2万张证书" @@ -29,7 +29,7 @@ func TestSendTemplateJoinTeam(t *testing.T) { } func TestSendTemplateCheckinSuccess(t *testing.T) { - + url := "http://www.google.com.au/" first := "恭喜签到成功,你是第五位签到者" remark := "团结向上,一起发展" @@ -40,7 +40,7 @@ func TestSendTemplateCheckinSuccess(t *testing.T) { } func TestSendTemplateMsgFormFillupDone(t *testing.T) { - + url := "http://www.google.com.au" first := "您的录入信息已经收到,正在核实" remark := "若信息有误,会影响您校友会会员的资格" @@ -50,7 +50,7 @@ func TestSendTemplateMsgFormFillupDone(t *testing.T) { } func TestSendTemplateEnrollSuccess(t *testing.T) { - + url := "http://www.google.com.au/" first := "即将到来的活动,欢迎你的到来" remark := "怎么才能让校友们积极互动是一个问题" @@ -62,7 +62,7 @@ func TestSendTemplateEnrollSuccess(t *testing.T) { } func TestSendTemplateMeetingReminder(t *testing.T) { - + url := "http://www.google.com.au/" first := "恭喜签到成功,你是第五位签到者" remark := "怎么才能让校友们积极互动是一个问题" @@ -73,7 +73,7 @@ func TestSendTemplateMeetingReminder(t *testing.T) { } func TestSendTemplateCheckinReminder(t *testing.T) { - + url := "http://www.google.com.au/" first := "即将到来的活动,欢迎你的到来" remark := "来晚了罚钱,你大爷的" @@ -84,7 +84,7 @@ func TestSendTemplateCheckinReminder(t *testing.T) { } func TestSendTemplateMemberFeeReminder(t *testing.T) { - + url := "http://www.google.com.au/" first := "校友会会员费\n" remark := "逾期不缴费将会被列出来" @@ -96,7 +96,7 @@ func TestSendTemplateMemberFeeReminder(t *testing.T) { } func TestSendTemplatePaymentAck(t *testing.T) { - + url := "http://www.google.com.au/" first := "即将到来的活动,欢迎你的到来" remark := "怎么才能让校友们积极互动是一个问题" @@ -109,7 +109,7 @@ func TestSendTemplatePaymentAck(t *testing.T) { } func TestSendTemplateCheckinFail(t *testing.T) { - + url := "http://www.google.com.au/" first := "--" remark := "checkin failed, due to your location is incorrect" @@ -119,7 +119,7 @@ func TestSendTemplateCheckinFail(t *testing.T) { } func TestSendTemplateInformCollection(t *testing.T) { - + url := "http://www.google.com.au/" first := "恭喜你获得本次Lucky Draw奖金 $200澳币" remark := "请你点击详情,通知你已收到奖励" @@ -129,7 +129,7 @@ func TestSendTemplateInformCollection(t *testing.T) { } func TestSendTemplateMsgJoinCommunity(t *testing.T) { - + url := "http://www.google.com.au" communityName := "小大同会" first := "欢迎加入Community" + communityName @@ -137,3 +137,15 @@ func TestSendTemplateMsgJoinCommunity(t *testing.T) { joinDate := time.Now().Format("2006-01-02 15:04:06 Mon MST -07") templateSendJoinCommunity(toUser, url, first, remark, communityName, joinDate) } + +func TestSendTemplateMsgAccountBalance(t *testing.T) { + url := "http://www.google.com.au" + first := "你有积分 100 " + name := "张三二" + addr := "西大直街100 号, 广山区, 南京市,中国, 10086" + card := "11111 3333 4444 5555" + balance := "澳币200元" + remark := "如有余额请联络财务兑现: " + time.Now().Format("2006-01-02 15:04:06 Mon MST -07") + templateSendAccountBalance(toUser, url, first, remark, name, addr, card, balance) + +} diff --git a/serveCommand.go b/serveCommand.go index 93427f8..bb979a7 100644 --- a/serveCommand.go +++ b/serveCommand.go @@ -56,9 +56,7 @@ func (ss *openIDSessionData) serveTextCommand(in *InWechatMsg) (processed bool) } if proc, hasProc := AllProc[cmd]; hasProc { - proc.init(ss) - proc.intro(ss, in) - proc.start(ss, in) + startProc(proc, ss, in) processed = true return true } @@ -66,6 +64,12 @@ func (ss *openIDSessionData) serveTextCommand(in *InWechatMsg) (processed bool) return false //不认识的命令,我们选择这个信息不处理 } +func startProc(proc chatProcedure, ss *openIDSessionData, in *InWechatMsg) { + proc.init(ss) + proc.intro(ss, in) + proc.start(ss, in) +} + func allCommand(ss *openIDSessionData, in *InWechatMsg) (processed bool) { processed = true msg := "命令如下:\n" diff --git a/serveEvents.go b/serveEvents.go index 3e98c20..60f33d4 100644 --- a/serveEvents.go +++ b/serveEvents.go @@ -1,6 +1,6 @@ package main -func (ss *openIDSessionData) serveEvents(in* InWechatMsg) (processed bool) { +func (ss *openIDSessionData) serveEvents(in *InWechatMsg) (processed bool) { processed = true e := in.body.(EventMsg) switch e.Event { @@ -23,9 +23,9 @@ func (ss *openIDSessionData) serveEvents(in* InWechatMsg) (processed bool) { onLocation(in) case "CLICK": in.replyText("") - onClick(in) + onClick(ss, in) case "VIEW": - in.replyText("CLICK" + e.EventKey) + in.replyText("VIEW" + e.EventKey) case "TEMPLATESENDJOBFINISH": // //