Beispiel #1
0
        public ActionResult BatchUntagging()
        {
            MemberBatchTaggingArgs args = RequestArgs <MemberBatchTaggingArgs>();

            if (args == null)
            {
                return(RespondResult(false, "参数无效。"));
            }

            NormalResult result = _memberTagManager.BatchUntagging(DomainContext, args);

            #region 操作日志

            _operatedLogManager.Create(new OperatedLogEntity()
            {
                Domain      = DomainContext.Domain.Id,
                AppId       = DomainContext.AppId,
                User        = UserContext.User.Id,
                IP          = Request.UserHostAddress,
                Module      = EnumModule.Member,
                Description = "设置用户的标签"
            });

            #endregion

            return(RespondResult(result.Success, result.Message));
        }
        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);
        }