Esempio n. 1
0
 public JsonResult DelReply(Guid id)
 {
     try
     {
         MpReplyService.BeginTransaction();
         MpReply reply = MpReplyService.GetALL(x => x.Id == id).FirstOrDefault();
         if (reply != null)
         {
             if (reply.MpMaterial.TypeName == "text")
             {
                 MpMaterialItemService.Delete(reply.MpMaterial.MpMaterialItems.FirstOrDefault());
                 MpMaterialService.Delete(reply.MpMaterial);
             }
             MpReplyService.Delete(reply);
         }
         MpReplyService.Commit();
         return(JsonMessage(true, ""));
     }
     catch (Exception e)
     {
         Log4NetImpl.Write("DelReply失败:" + e.Message);
         MpReplyService.Rollback();
         return(JsonMessage(false, ""));
     }
 }
Esempio n. 2
0
        /// <summary>
        /// 订阅(关注)事件
        /// </summary>
        /// <returns></returns>
        public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage)
        {
            Log4NetImpl.Write("关注事件触发:");
            MpUser fromUser = MpUserService.GetByOpenID(requestMessage.FromUserName);

            if (fromUser != null)
            {
                Log4NetImpl.Write("EventKey:" + requestMessage.EventKey);
                fromUser.IsSubscribe = true;
                if (!string.IsNullOrEmpty(requestMessage.EventKey))
                {
                    fromUser.SceneId = Convert.ToInt32(requestMessage.EventKey.Replace("qrscene_", ""));
                    Log4NetImpl.Write("OnEvent_SubscribeRequest:" + fromUser.SceneId.ToString());
                }
                fromUser.LastVisitDate = DateTime.Now;
                MpUserService.Update(fromUser);
            }
            var     responseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageText>(requestMessage);
            MpReply reply           = MpReplyService.GetALL(k => k.Action == "beadded").FirstOrDefault();

            if (reply != null)
            {
                return(ResponseMsg(reply.MpMaterial));
            }
            return(responseMessage);
        }
Esempio n. 3
0
        /// <summary>
        /// 处理链接消息请求
        /// </summary>
        /// <param name="requestMessage"></param>
        /// <returns></returns>
        public override IResponseMessageBase OnLinkRequest(RequestMessageLink requestMessage)
        {
            MpReply reply = MpReplyService.GetALL(k => k.Action == "autoreply").FirstOrDefault();

            if (reply != null)
            {
                return(ResponseMsg(reply.MpMaterial));
            }
            return(null);
        }
Esempio n. 4
0
        public ActionResult Index(string type)
        {
            if (type == "beadded")
            {
                if (!base.HasPermission("mpattentionreply", PermissionOperate.manager))
                {
                    return(base.ShowNotPermissionTip(""));
                }
            }

            if (type == "autoreply")
            {
                if (!base.HasPermission("mpmessagereply", PermissionOperate.manager))
                {
                    return(base.ShowNotPermissionTip(""));
                }
            }

            MpReply reply = MpReplyService.GetByAction(type);

            if (reply == null)
            {
                reply             = new MpReply();
                reply.Id          = Guid.Empty;
                reply.Action      = type;
                reply.CategoryID  = Guid.Empty;
                reply.CreateDate  = DateTime.Now;
                reply.CreateUser  = Guid.Empty;
                reply.KeywordName = "";
                reply.MatchMode   = 0;
                reply.MaterialID  = Guid.Empty;
                reply.MpMaterial  = new MpMaterial {
                    Id = Guid.Empty, TypeName = "text", TypeID = 5, CreateDate = DateTime.Now
                };
                IList <MpMaterialItem> mpitems = new List <MpMaterialItem> {
                    new MpMaterialItem {
                        Id           = Guid.Empty,
                        CreateDate   = DateTime.Now,
                        ReplyContent = ""
                    }
                };
                reply.MpMaterial.MpMaterialItems = mpitems;
                reply.RuleName   = "";
                reply.SortIndex  = 0;
                reply.UpdateDate = DateTime.Now;
                reply.UpdateUser = Guid.Empty;
            }
            ViewBag.strList = JsonConvert.SerializeObject(reply);
            return(View(reply));
        }
Esempio n. 5
0
        /// <summary>
        /// 处理文字请求
        /// </summary>
        /// <returns></returns>
        public override IResponseMessageBase OnTextRequest(RequestMessageText requestMessage)
        {
            MpReply reply    = MpReplyService.GetALL(k => k.KeywordName == requestMessage.Content.Trim()).FirstOrDefault();
            MpUser  fromUser = MpUserService.GetByOpenID(requestMessage.FromUserName);

            if (fromUser != null)
            {
                if (reply == null)
                {
                    reply = MpReplyService.GetALL(k => k.Action == "autoreply").FirstOrDefault();
                }
                if (reply != null)
                {
                    fromUser.LastVisitDate = DateTime.Now;
                    fromUser.IsSubscribe   = true;
                    MpUserService.Update(fromUser);
                    //用户接入
                    if (reply.MpMaterial.IsChat == 1)
                    {
                        Client.StartKfMeeting(fromUser.Id);
                        return(null);
                    }
                    //用户断开
                    if (reply.MpMaterial.IsChat == 2 || fromUser.LastVisitDate.AddMinutes(120) < DateTime.Now)
                    {
                        fromUser.UserState = 0;
                        Client.EndKfMeeting(fromUser.Id);
                        return(null);
                    }

                    if (fromUser.UserState == 1)
                    {
                        //发送消息给客服
                        Client.SendPrivateMessage(fromUser.Id, requestMessage.Content);
                        return(null);
                    }
                    return(ResponseMsg(reply.MpMaterial));
                }
            }

            return(null);
        }