123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- 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
- }
|