/// <summary> /// 刷新指定域下面分组信息,将调用微信API获取最新分组信息 /// </summary> /// <param name="domainContext"></param> public void SyncTagList(DomainContext domainContext) { RequestApiResult <WeixinGetTagListResult> result = TagsApiWrapper.GetTagList(domainContext); if (result.Success) { List <CommandParameter> parameterList = new List <CommandParameter>(); parameterList.Add(new CommandParameter("@domain", domainContext.Domain.Id)); parameterList.Add(new CommandParameter("@appId", domainContext.AppId)); _dataBase.ExecuteNonQuery("DELETE FROM [MemberTag] WHERE [Domain] = @domain AND [AppId] = @appId", parameterList); foreach (WeixinGetTagListResult_Tag item in result.ApiResult.TagList) { MemberTagEntity tag = new MemberTagEntity(); tag.TagId = item.Id; tag.Name = item.Name; tag.Domain = domainContext.Domain.Id; tag.AppId = domainContext.AppId; _dataBase.Insert(tag); } //过滤用户,将已不存在的分组置为0 } else { _log.Write("RefreshTagList 失败", result.Message, TraceEventType.Warning); } }
public NormalResult UpdateMemberTag(DomainContext domainContext, MemberTagEntity tag) { NormalResult result = new NormalResult(false); if (tag == null) { result.Message = "参数错误。"; return(result); } //先往微信后台更新,成功后写数据库 WeixinTag apiArgs = new WeixinTag(); apiArgs.Tag.Id = tag.TagId; apiArgs.Tag.Name = tag.Name; RequestApiResult updateResult = TagsApiWrapper.Update(domainContext, apiArgs); if (updateResult.Success == false) { result.Message = updateResult.Message; return(result); } _dataBase.Update(tag); result.Success = true; return(result); }
public NormalResult CreateMemberTag(DomainContext domainContext, MemberTagEntity tag) { NormalResult result = new NormalResult(false); if (tag == null) { result.Message = "参数错误。"; return(result); } //先往微信后台添加,成功后写数据库 WeixinCreateTagArgs apiArgs = new WeixinCreateTagArgs(); apiArgs.Tag.Name = tag.Name; RequestApiResult <WeixinTag> createResult = TagsApiWrapper.Create(domainContext, apiArgs); if (createResult.Success == false) { result.Message = createResult.Message; return(result); } tag.Domain = domainContext.Domain.Id; tag.TagId = createResult.ApiResult.Tag.Id; _dataBase.Insert(tag); result.Success = true; return(result); }
public NormalResult BatchUntagging(DomainContext domainContext, MemberBatchTaggingArgs args) { NormalResult result = new NormalResult(false); if (args == null || args.OpenIdList == null || args.OpenIdList.Length == 0) { result.Message = "没有指定要更新的会员。"; return(result); } WeixinTagBatchTaggingArgs apiArgs = new WeixinTagBatchTaggingArgs(); apiArgs.TagId = args.TagId; apiArgs.Data = new WeixinTagBatchTaggingArgs_Data(); apiArgs.Data.OpenIdList = args.OpenIdList; RequestApiResult updateResult = TagsApiWrapper.BatchUntagging(domainContext, apiArgs); if (updateResult.Success == false) { result.Message = updateResult.Message; return(result); } //更新数据库MEMBER表字段 List <CommandParameter> parameterList = new List <CommandParameter>(); parameterList.Add(new CommandParameter("@domain", domainContext.Domain.Id)); parameterList.Add(new CommandParameter("@appId", domainContext.AppId)); parameterList.Add(new CommandParameter("@tagId", args.TagId + ",")); StringBuilder sqlWhere = new StringBuilder(); for (int i = 0; i < args.OpenIdList.Length; i++) { sqlWhere.Append("@openId" + i); if (i < args.OpenIdList.Length - 1) { sqlWhere.Append(","); } parameterList.Add(new CommandParameter("@openId" + i, args.OpenIdList[i])); } _dataBase.ExecuteNonQuery( "UPDATE [Member] SET [TagList] = REPLACE([TagList],@tagId,'') WHERE [Domain] = @domain AND [AppId] = @appId AND CHARINDEX(@tagId,[TagList]) > 0 AND [OpenId] IN (" + sqlWhere.ToString() + ")", parameterList); result.Success = true; return(result); }
public NormalResult RemoveMemberTag(DomainContext domainContext, Guid id) { NormalResult result = new NormalResult(false); MemberTagEntity memberTag = GetMemberTag(id); if (memberTag == null) { result.Message = "分组不存在。"; return(result); } //先往微信后台更新,成功后写数据库 RequestApiResult removeResult = TagsApiWrapper.Remove(domainContext, memberTag.TagId); if (removeResult.Success == false) { result.Message = removeResult.Message; return(result); } //移除此标签下的用户的这个标签 List <CommandParameter> parameterList = new List <CommandParameter>(); parameterList.Add(new CommandParameter("@domain", domainContext.Domain.Id)); parameterList.Add(new CommandParameter("@appId", domainContext.AppId)); parameterList.Add(new CommandParameter("@tagId", memberTag.TagId.ToString() + ",")); _dataBase.ExecuteNonQuery( "UPDATE [Member] SET [TagList] = REPLACE([TagList],@tagId,'') WHERE [Domain] = @domain AND [AppId] = @appId AND CHARINDEX(@tagId,[TagList]) > 0", parameterList); _dataBase.Remove(memberTag); result.Success = true; return(result); }