/// <summary> /// 同步群信息 /// </summary> /// <param name="groupList"></param> public void SyncGroup(IList <ContactList> groupList) { //新增 //删除 //修改 List <wx_group> listGroup = tobotDB.GetInstance().Fetch <wx_group>("select * from wx_group where RobotId=@0 ", Global.robot.Id); List <string> groupIdList = listGroup.Select(n => n.GroupId).ToList(); //数据库中 List <string> aliasList = groupList.Select(n => n.Alias).ToList(); //当前读取 var delList = groupIdList.Except(aliasList).ToList(); var insertList = aliasList.Except(groupIdList).ToList(); var updateList = groupIdList.Intersect(aliasList).ToList(); string groupId = string.Join(",", delList.ToArray()); if (!string.IsNullOrEmpty(groupId)) { string delSQL = string.Format(@" update wx_group set Isdelete=1 where GroupId in({0}) ", groupId); int result = tobotDB.GetInstance().Execute(delSQL); } foreach (string item in insertList) { ContactList contact = groupList.Where(n => n.Alias == item).FirstOrDefault(); wx_group group = new wx_group(); group.GroupId = contact.Alias; group.GroupName = contact.NickName; group.Isdelete = false; group.Createtime = DateTime.Now; group.Updatetime = DateTime.Now; group.HeadImgUrl = contact.HeadImgUrl; group.MemberCount = contact.MemberCount; group.OwnerUin = contact.OwnerUin; group.PYQuanPin = contact.PYQuanPin; group.RobotId = Global.robot.Id; group.UserName = contact.UserName; group.RobotAlias = Global.robot.Alias; group.Statues = contact.Statues; tobotDB.GetInstance().Insert(group); } foreach (string item in updateList) { wx_group group = listGroup.Where(n => n.GroupId == item).FirstOrDefault(); tobotDB.GetInstance().Update(group); } }
public void SyncGroup(ContactList contact) { string sql = @" select top 1 * from wx_group where RobotId=@robotId and IsDelete=0 and GroupId=@groupId "; string groupId = WechatCommon.GetTrueId(contact.UserName); wx_group group = tobotDB.GetInstance().Query <wx_group>(sql, new { robotId = Global.robot.Id, groupId = groupId }).FirstOrDefault(); if (group == null) { group = new wx_group(); group.GroupId = contact.Alias; group.Isdelete = false; group.GroupName = contact.NickName; group.Createtime = DateTime.Now; group.Updatetime = DateTime.Now; //group.HeadImgUrl = contact.HeadImgUrl; group.MemberCount = contact.MemberCount; group.OwnerUin = contact.OwnerUin; group.PYQuanPin = contact.PYQuanPin; group.RobotId = Global.robot.Id; group.UserName = contact.UserName; group.RobotAlias = Global.robot.Alias; group.Statues = contact.Statues; tobotDB.GetInstance().Insert(group); } else { group.GroupName = contact.NickName; group.Updatetime = DateTime.Now; //group.HeadImgUrl = contact.HeadImgUrl; group.MemberCount = contact.MemberCount; group.OwnerUin = contact.OwnerUin; group.PYQuanPin = contact.PYQuanPin; group.RobotId = Global.robot.Id; group.UserName = contact.UserName; group.RobotAlias = Global.robot.Alias; group.Statues = contact.Statues; tobotDB.GetInstance().Update(group); } SyncGroupMember(contact.MemberList, groupId, contact.UserName); }