123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package util
- import (
- "fmt"
- "net/rpc"
- qu "app.yhyue.com/moapp/jybase/common"
- "app.yhyue.com/moapp/jybase/go-logger/logger"
- "app.yhyue.com/moapp/message/config"
- qrpc "app.yhyue.com/moapp/message/model"
- )
- var PushPool = make(chan bool, config.PushConfig.PushPoolSize)
- func StartPush(mess map[string]interface{}, userid string) {
- //推送微信
- if isPushOk := SendWeixin(mess); !isPushOk {
- logger.Info("推送失败:", userid, mess)
- }
- }
- //推送微信
- func SendWeixin(mess map[string]interface{}) bool {
- if len(mess) == 0 {
- return false
- }
- s_m_openid := qu.ObjToString(mess["openid"])
- if config.PushConfig.TestId != "" {
- s_m_openid = config.PushConfig.TestId
- }
- if s_m_openid == "" {
- return false
- }
- PushPool <- true
- defer func() {
- <-PushPool
- }()
- phone := qu.ObjToString(mess["phone"])
- product_type := qu.ObjToString(mess["product_type"])
- order_code := qu.ObjToString(mess["order_code"])
- buy_time := qu.ObjToString(mess["buy_time"])
- end_time := qu.ObjToString(mess["end_time"])
- //商品名称
- keyword1_color := config.PushConfig.WxMsg.Keyword1.Color
- keyword1_value := fmt.Sprintf(config.PushConfig.WxMsg.Keyword1.Value, product_type)
- //订单编号
- keyword2_color := config.PushConfig.WxMsg.Keyword2.Color
- keyword2_value := fmt.Sprintf(config.PushConfig.WxMsg.Keyword2.Value, order_code)
- //购买时间
- keyword3_color := config.PushConfig.WxMsg.Keyword3.Color
- keyword3_value := fmt.Sprintf(config.PushConfig.WxMsg.Keyword3.Value, buy_time)
- //到期时间
- keyword4_color := config.PushConfig.WxMsg.Keyword4.Color
- keyword4_value := fmt.Sprintf(config.PushConfig.WxMsg.Keyword4.Value, end_time)
- first_value := fmt.Sprintf(config.PushConfig.WxMsg.First.Value, phone)
- first_color := config.PushConfig.WxMsg.First.Color
- remark_value := config.PushConfig.WxMsg.Remark.Value
- tmplData := map[string]*qrpc.TmplItem{
- "first": &qrpc.TmplItem{
- Value: first_value,
- Color: first_color,
- },
- "keyword1": &qrpc.TmplItem{
- Value: keyword1_value,
- Color: keyword1_color,
- },
- "keyword2": &qrpc.TmplItem{
- Value: keyword2_value,
- Color: keyword2_color,
- },
- "keyword3": &qrpc.TmplItem{
- Value: keyword3_value,
- Color: keyword3_color,
- },
- "keyword4": &qrpc.TmplItem{
- Value: keyword4_value,
- Color: keyword4_color,
- },
- "remark": &qrpc.TmplItem{
- Value: remark_value,
- Color: first_color,
- },
- }
- ok, _ := WxSendTmplMsg(config.PushConfig.Weixinrpc, &qrpc.WxTmplMsg{
- OpenId: s_m_openid,
- TplId: config.PushConfig.WxMsg.Id,
- TmplData: tmplData,
- })
- return ok
- }
- /*通用的微信发模板消息方法
- *成功:repl=="Y"
- */
- func WxSendTmplMsg(address string, p *qrpc.WxTmplMsg) (bool, error) {
- defer qu.Catch()
- var repl qrpc.RpcResult
- client, err := rpc.DialHTTP("tcp", address)
- if err != nil {
- logger.Info("tcp err:", p.OpenId, err)
- return false, err
- }
- defer client.Close()
- err = client.Call("WeiXinRpc.SendTmplMsg", p, &repl)
- if err != nil {
- logger.Info("wxRpc err:", p.OpenId, err)
- return false, err
- }
- return repl == "Y", nil
- }
|