package logic import ( "eta/eta_menu_sync/models" "eta/eta_menu_sync/services" "time" ) // SyncWxGroup 同步微信群 func SyncWxGroup(wxGroupList []services.GroupResult, wechatHelper *models.WechatHelper) (err error) { wxIdList := make([]string, 0) wxIdMap := make(map[string]services.GroupResult) for _, v := range wxGroupList { wxIdList = append(wxIdList, v.Wxid) wxIdMap[v.Wxid] = v } wechatGroupObj := models.WechatGroup{} // 将未添加入库的群入库 { existsGroupList, tmpErr := wechatGroupObj.GetListByWxIdList(wxIdList) if tmpErr != nil { err = tmpErr return } // 已经入库的微信群需要移除 for _, v := range existsGroupList { if tmpWechatInfo, ok := wxIdMap[v.WechatId]; ok { if v.WechatGroupName != tmpWechatInfo.Nick { // 可能存在群昵称不一致的情况,那么就修改吧 v.WechatGroupName = tmpWechatInfo.Nick v.Update([]string{"WechatGroupName"}) } } delete(wxIdMap, v.WechatId) } addList := make([]models.WechatGroup, 0) for _, v := range wxIdMap { nick := v.Nick if v.Nick == `` { // 可能存在群昵称不一致的情况,那就用微信群标识吧 nick = v.Wxid } addList = append(addList, models.WechatGroup{ WechatGroupId: 0, WechatGroupName: nick, //群昵称 WechatId: v.Wxid, Enabled: 1, ModifyTime: time.Now(), CreateTime: time.Now(), }) } if len(addList) > 0 { err = wechatGroupObj.CreateList(addList) if err != nil { return } } } { existsGroupList, tmpErr := wechatGroupObj.GetListByWxIdList(wxIdList) if tmpErr != nil { err = tmpErr return } wechatGroupIdMap := make(map[int]int, 0) // 已经入库的微信标识 for _, v := range existsGroupList { wechatGroupIdMap[v.WechatGroupId] = v.WechatGroupId } wechatHelperGroupRelationObj := models.WechatGroupHelperRelation{} wechatHelperGroupList, tmpErr := wechatHelperGroupRelationObj.GetListByHelperId(wechatHelper.WechatHelperId) if tmpErr != nil { err = tmpErr return } // 移除已经关联的群 for _, v := range wechatHelperGroupList { delete(wechatGroupIdMap, v.WechatGroupId) } // 添加群与小助手的关系 addList := make([]models.WechatGroupHelperRelation, 0) for _, v := range wechatGroupIdMap { addList = append(addList, models.WechatGroupHelperRelation{ WechatGroupId: v, WechatHelperId: wechatHelper.WechatHelperId, }) } if len(addList) > 0 { err = wechatHelperGroupRelationObj.CreateList(addList) if err != nil { return } } } return }