Beispiel #1
0
        protected override DeleteKeyWordRD ProcessRequest(DTO.Base.APIRequest <DeleteKeyWordRP> pRequest)
        {
            var rd = new DeleteKeyWordRD();

            string replyId = pRequest.Parameters.ReplyId;


            var bll = new WKeywordReplyBLL(CurrentUserInfo);

            var entity = bll.QueryByEntity(new WKeywordReplyEntity()
            {
                ReplyId = replyId
            }, null);

            if (entity != null)
            {
                bll.Delete(entity);
            }
            else
            {
                throw new APIException("无效的关键字标识")
                      {
                          ErrorCode = 120
                      };
            }
            return(rd);
        }
Beispiel #2
0
        protected override SetKeyWordRD ProcessRequest(DTO.Base.APIRequest <SetKeyWordRP> pRequest)
        {
            var rd          = new SetKeyWordRD();
            var keywordList = pRequest.Parameters.KeyWordList;



            if (keywordList.DisplayIndex == 0)
            {
                throw new APIException("序号不能为空或为零")
                      {
                          ErrorCode = 122
                      };
            }
            if (string.IsNullOrEmpty(keywordList.KeyWord))
            {
                throw new APIException("关键字不能为空")
                      {
                          ErrorCode = 123
                      };
            }
            if (string.IsNullOrEmpty(keywordList.ApplicationId))
            {
                throw new APIException("微信公众号不能为空")
                      {
                          ErrorCode = 124
                      };
            }
            if (keywordList.BeLinkedType == 0)
            {
                throw new APIException("关联类型不能为空")
                      {
                          ErrorCode = 125
                      };
            }
            if (keywordList.ReplyType == 0)
            {
                throw new APIException("回复类型不能为空")
                      {
                          ErrorCode = 126
                      };
            }
            var bll = new WKeywordReplyBLL(CurrentUserInfo);

            #region 关键字不能重复
            WKeywordReplyEntity wKeywordReplyEntity = new WKeywordReplyEntity()
            {
                Keyword       = keywordList.KeyWord,
                ApplicationId = keywordList.ApplicationId
            };
            var queryByEntityArray = bll.QueryByEntity(wKeywordReplyEntity, null);
            if (string.IsNullOrEmpty(keywordList.ReplyId))
            {
                if (queryByEntityArray.Length != 0)
                {
                    throw new APIException("关键字不能重复")
                          {
                              ErrorCode = 127
                          };
                }
            }
            else
            {
                if (queryByEntityArray.Length != 0 && queryByEntityArray[0].ReplyId != keywordList.ReplyId)
                {
                    throw new APIException("关键字不能重复")
                          {
                              ErrorCode = 127
                          };
                }
            }
            #endregion

            var entity = new WKeywordReplyEntity
            {
                ApplicationId = keywordList.ApplicationId,
                Keyword       = keywordList.KeyWord,
                ReplyType     = keywordList.ReplyType,
                Text          = keywordList.Text
            };

            if (keywordList.ReplyType == 1)
            {
                if (string.IsNullOrEmpty(keywordList.Text) || keywordList.Text == "")
                {
                    throw new APIException("文本不能为空")
                          {
                              ErrorCode = 120
                          };
                }
                if (Encoding.Default.GetBytes(keywordList.Text).Length > 2048)
                {
                    throw new APIException("文本超过了最大限制(2M)")
                          {
                              ErrorCode = 121
                          };
                }
            }
            if (keywordList.ReplyType == 3)
            {
                if (keywordList.MaterialTextIds == null || keywordList.MaterialTextIds.Any() == false)
                {
                    throw new APIException("图文消息不能为空")
                          {
                              ErrorCode = 124
                          };
                }
                if (keywordList.MaterialTextIds.Any() == true && keywordList.MaterialTextIds.Length > 10)
                {
                    throw new APIException("图文消息最大不能超过10条数据")
                          {
                              ErrorCode = 125
                          };
                }
            }


            if (string.IsNullOrEmpty(keywordList.ReplyId))
            {
                var replyId = Utils.NewGuid();
                entity.ReplyId = replyId;
                bll.Create(entity);

                rd.ReplyId = replyId;
            }
            else
            {
                entity.ReplyId = keywordList.ReplyId;
                bll.Update(entity);

                rd.ReplyId = keywordList.ReplyId;
            }

            bll.UpdateWkeywordReplyByReplyId(rd.ReplyId, keywordList.BeLinkedType, keywordList.KeywordType,
                                             keywordList.DisplayIndex);

            if (keywordList.ReplyType == 3)
            {
                var mappingBll    = new WMenuMTextMappingBLL(CurrentUserInfo);
                var mappingEntity = mappingBll.QueryByEntity(new WMenuMTextMappingEntity()
                {
                    MenuId = rd.ReplyId
                }, null);

                if (mappingEntity.Length > 0)
                {
                    mappingBll.Delete(mappingEntity);
                }
                var textMappingEntity = new WMenuMTextMappingEntity();
                foreach (var materialTextIdInfo in keywordList.MaterialTextIds)
                {
                    textMappingEntity.MappingId    = Guid.NewGuid();
                    textMappingEntity.MenuId       = rd.ReplyId;
                    textMappingEntity.DisplayIndex = materialTextIdInfo.DisplayIndex;
                    textMappingEntity.TextId       = materialTextIdInfo.TestId;
                    textMappingEntity.CustomerId   = CurrentUserInfo.ClientID;
                    mappingBll.Create(textMappingEntity);
                }
            }
            return(rd);
        }