1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package MessageHandlers
- import (
- "context"
- "encoding/json"
- "github.com/zeromicro/go-zero/core/logx"
- "wechat-api/ent/wx"
- "wechat-api/internal/pkg/wechat_ws"
- "wechat-api/internal/svc"
- "wechat-api/workphone"
- )
- type ChatroomPushNoticeHandler struct {
- svcCtx *svc.ServiceContext
- }
- func NewChatroomPushNoticeHandler(svcCtx *svc.ServiceContext) *ChatroomPushNoticeHandler {
- return &ChatroomPushNoticeHandler{
- svcCtx: svcCtx,
- }
- }
- func (f *ChatroomPushNoticeHandler) Handler(msg *wechat_ws.MsgJsonObject) error {
- if msg.MsgType == "ChatroomPushNotice" {
- message := workphone.ChatRoomPushNoticeMessage{}
- err := json.Unmarshal([]byte(msg.Message), &message)
- if err != nil {
- return err
- }
- // 拿到租户 id
- wx_info, err := f.svcCtx.DB.Wx.Query().
- Where(
- wx.WxidEQ(message.WeChatId), // Additional filter by organizationId
- ).
- Only(context.TODO())
- //hookClient := hook.NewHook("", "", "")
- for _, friend := range message.ChatRooms {
- friendType := 2
- //if friend.Type == 1 {
- // friendType = 2
- // //_ = hookClient.RequestChatRoomInfo(friend.FriendId, message.WeChatId)
- //} else {
- // friendType = 1
- //}
- _, err = f.svcCtx.DB.Contact.Create().
- SetWxWxid(message.WeChatId).
- SetType(friendType).
- SetWxid(friend.UserName).
- SetNickname(friend.NickName).
- SetHeadimg(friend.Avatar).
- //SetSex(cast.ToInt(friend.Gender)).
- SetOrganizationID(wx_info.OrganizationID).
- OnConflict().
- UpdateNewValues().
- SetOrganizationID(wx_info.OrganizationID).
- ID(context.TODO())
- if err != nil {
- logx.Error("Contact.Create: ", wx_info.OrganizationID)
- return err
- }
- }
- }
- return nil
- }
|