wechat_group.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package logic
  2. import (
  3. "eta/eta_menu_sync/models"
  4. "eta/eta_menu_sync/services"
  5. "time"
  6. )
  7. // SyncWxGroup 同步微信群
  8. func SyncWxGroup(wxGroupList []services.GroupResult, wechatHelper *models.WechatHelper) (err error) {
  9. wxIdList := make([]string, 0)
  10. wxIdMap := make(map[string]services.GroupResult)
  11. for _, v := range wxGroupList {
  12. wxIdList = append(wxIdList, v.Wxid)
  13. wxIdMap[v.Wxid] = v
  14. }
  15. wechatGroupObj := models.WechatGroup{}
  16. // 将未添加入库的群入库
  17. {
  18. existsGroupList, tmpErr := wechatGroupObj.GetListByWxIdList(wxIdList)
  19. if tmpErr != nil {
  20. err = tmpErr
  21. return
  22. }
  23. // 已经入库的微信群需要移除
  24. for _, v := range existsGroupList {
  25. if tmpWechatInfo, ok := wxIdMap[v.WechatId]; ok {
  26. if v.WechatGroupName != tmpWechatInfo.Nick { // 可能存在群昵称不一致的情况,那么就修改吧
  27. v.WechatGroupName = tmpWechatInfo.Nick
  28. v.Update([]string{"WechatGroupName"})
  29. }
  30. }
  31. delete(wxIdMap, v.WechatId)
  32. }
  33. addList := make([]models.WechatGroup, 0)
  34. for _, v := range wxIdMap {
  35. nick := v.Nick
  36. if v.Nick == `` { // 可能存在群昵称不一致的情况,那就用微信群标识吧
  37. nick = v.Wxid
  38. }
  39. addList = append(addList, models.WechatGroup{
  40. WechatGroupId: 0,
  41. WechatGroupName: nick, //群昵称
  42. WechatId: v.Wxid,
  43. Enabled: 1,
  44. ModifyTime: time.Now(),
  45. CreateTime: time.Now(),
  46. })
  47. }
  48. if len(addList) > 0 {
  49. err = wechatGroupObj.CreateList(addList)
  50. if err != nil {
  51. return
  52. }
  53. }
  54. }
  55. {
  56. existsGroupList, tmpErr := wechatGroupObj.GetListByWxIdList(wxIdList)
  57. if tmpErr != nil {
  58. err = tmpErr
  59. return
  60. }
  61. wechatGroupIdMap := make(map[int]int, 0)
  62. // 已经入库的微信标识
  63. for _, v := range existsGroupList {
  64. wechatGroupIdMap[v.WechatGroupId] = v.WechatGroupId
  65. }
  66. wechatHelperGroupRelationObj := models.WechatGroupHelperRelation{}
  67. wechatHelperGroupList, tmpErr := wechatHelperGroupRelationObj.GetListByHelperId(wechatHelper.WechatHelperId)
  68. if tmpErr != nil {
  69. err = tmpErr
  70. return
  71. }
  72. // 移除已经关联的群
  73. for _, v := range wechatHelperGroupList {
  74. delete(wechatGroupIdMap, v.WechatGroupId)
  75. }
  76. // 添加群与小助手的关系
  77. addList := make([]models.WechatGroupHelperRelation, 0)
  78. for _, v := range wechatGroupIdMap {
  79. addList = append(addList, models.WechatGroupHelperRelation{
  80. WechatGroupId: v,
  81. WechatHelperId: wechatHelper.WechatHelperId,
  82. })
  83. }
  84. if len(addList) > 0 {
  85. err = wechatHelperGroupRelationObj.CreateList(addList)
  86. if err != nil {
  87. return
  88. }
  89. }
  90. }
  91. return
  92. }