sendWxTmplMsg.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package common
  2. import (
  3. "app.yhyue.com/moapp/MessageCenter/entity"
  4. "app.yhyue.com/moapp/MessageCenter/rpc/internal/config"
  5. "app.yhyue.com/moapp/jybase/common"
  6. m "app.yhyue.com/moapp/jybase/mongodb"
  7. qrpc "app.yhyue.com/moapp/jybase/rpc"
  8. "fmt"
  9. )
  10. // GetUserOpenIdAndWxPushState 查询微信openid微信消息通知状态
  11. // mId mongoUserid、oId 用户openid、pId positionId 用户职位id
  12. func GetUserOpenIdAndWxPushState(mId, oId, pId, settingKey string) (openId string, wxPushOpen bool) {
  13. uData := func() map[string]interface{} {
  14. query := map[string]interface{}{}
  15. if oId != "" {
  16. query["s_m_openid"] = oId
  17. } else if mId != "" {
  18. query["_id"] = m.StringTOBsonId(mId)
  19. } else if pId != "" {
  20. uInfo := entity.Mysql.SelectBySql("SELECT user_id FROM base_service.base_position WHERE id = ? ", pId)
  21. if uInfo != nil && len(*uInfo) > 0 {
  22. fmt.Println((*uInfo)[0]["user_id"])
  23. base_user_id := common.Int64All((*uInfo)[0]["user_id"])
  24. if base_user_id != 0 {
  25. query["base_user_id"] = base_user_id
  26. }
  27. }
  28. }
  29. if len(query) > 0 {
  30. rData, _ := entity.MQFW.FindOneByField("user", query, fmt.Sprintf(`{"s_m_openid":1,"o_pushset.%s.i_wxpush":1}`, settingKey))
  31. if rData != nil && len(*rData) > 0 {
  32. return *rData
  33. }
  34. }
  35. return nil
  36. }()
  37. if uData == nil {
  38. return openId, false
  39. }
  40. openId = common.ObjToString(uData["s_m_openid"])
  41. if pushsetMap := common.ObjToMap(uData["o_pushset"]); pushsetMap != nil && len(*pushsetMap) > 0 {
  42. if pushkeyMap := common.ObjToMap((*pushsetMap)[settingKey]); pushkeyMap != nil && len(*pushkeyMap) > 0 {
  43. wxPushOpen = common.Int64All((*pushkeyMap)["i_wxpush"]) == 1
  44. }
  45. }
  46. return
  47. }
  48. // sendWxTmplMsg 发送微信模版消息
  49. func sendWxTmplMsg(openId, tplId, link string, msg map[string]*qrpc.TmplItem) (pushOk bool) {
  50. pushOk, _ = qrpc.WxSendTmplMsg(config.ConfigJson.WxTmplConfig.RpcAddr, &qrpc.WxTmplMsg{
  51. OpenId: openId,
  52. TplId: tplId,
  53. TmplData: msg,
  54. Url: link,
  55. //Url: Config.WebDomain + "/front/sess/" + util.Se_Topnet.EncodeString(s_m_openid+",uid,"+strconv.Itoa(int(time.Now().Unix()))+",msgremind") + "__" + hex.EncodeToString([]byte(fmt.Sprintf("type=%s&advertcode=%s", tp, wtmc.AdvertCode))),
  56. })
  57. return
  58. }
  59. // SendJySchoolMsg 发送剑鱼学堂类型消息
  60. // 标题 课程报名成功通知
  61. // 消息模版 课程名称 {{thing1.DATA}} 课程时间 {{time7.DATA}} 课程地点 {{thing6.DATA}} 课程类型 {{const11.DATA}}
  62. func SendJySchoolMsg(openId, title, date, address, class, link string) bool {
  63. msg := map[string]*qrpc.TmplItem{
  64. "thing1": &qrpc.TmplItem{
  65. Value: title,
  66. },
  67. "time7": &qrpc.TmplItem{
  68. Value: date,
  69. },
  70. "thing6": &qrpc.TmplItem{
  71. Value: address,
  72. },
  73. "const11": &qrpc.TmplItem{
  74. Value: class,
  75. },
  76. }
  77. return sendWxTmplMsg(openId, "配置文件获取", link, msg)
  78. }
  79. // SendSystemMsg 系统消息模版(包含服务通知、私信)
  80. // 消息模版 工单类型 {{thing19.DATA}} 工单标题 {{thing6.DATA}} 项目名称 {{thing13.DATA}} 服务时间 {{time25.DATA}} 服务地址 {{thing26.DATA}}
  81. func SendSystemMsg(openId, msgClass, title, context, date, link string) bool {
  82. msg := map[string]*qrpc.TmplItem{
  83. "thing19": &qrpc.TmplItem{
  84. Value: msgClass,
  85. },
  86. "thing6": &qrpc.TmplItem{
  87. Value: title,
  88. },
  89. "thing13": &qrpc.TmplItem{
  90. Value: context,
  91. },
  92. "time25": &qrpc.TmplItem{
  93. Value: date,
  94. },
  95. "thing26": &qrpc.TmplItem{
  96. Value: "如不再接收此类信息,请在我的-设置-推送设置关闭设置。",
  97. },
  98. }
  99. return sendWxTmplMsg(openId, "配置文件获取", link, msg)
  100. }