Esempio n. 1
0
        /// <summary>
        /// 通过二维码扫描关注扫描事件
        /// </summary>
        /// <param name="requestMessage"></param>
        /// <returns></returns>
        public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage)
        {
            _logger.LogTrace(Newtonsoft.Json.JsonConvert.SerializeObject(requestMessage));

            var responseMessage = this.CreateResponseMessage <ResponseMessageText>();

            var sceneId   = int.Parse(requestMessage.EventKey);
            var eventTask = db.QueryWechatQRScene()
                            .Where(m => m.SceneId == sceneId && m.QrCodeTicket == requestMessage.Ticket)
                            .OrderByDescending(m => m.Id)
                            .FirstOrDefault();

            if (eventTask == null || eventTask.Status == WechatQRSceneStatus.已处理)
            {
                responseMessage.Content = "您刚才扫的二维码已经失效";
            }

            if (eventTask.Category == "BindMember")
            {
                var bindMemberTask = db.QueryMemberWeChatBindTask()
                                     .Where(m => m.Code == sceneId.ToString())
                                     .FirstOrDefault();
                if (bindMemberTask == null || bindMemberTask.Status == MemberWeChatBindTaskStatus.已使用)
                {
                    responseMessage.Content = "您进行绑定的任务不存在或者已经完成";
                    return(responseMessage);
                }

                var memberWechat = db.QueryMemberWechat().Where(m => m.MemberId == bindMemberTask.MemberId)
                                   .FirstOrDefault();
                if (memberWechat != null && !memberWechat.IsDel)
                {
                    throw new Exception("您已经绑定了微信,如需要重新绑定,请先取消");
                }

                bindMemberTask.OpenId = requestMessage.FromUserName;
                bindMemberTask.Status = MemberWeChatBindTaskStatus.已使用;

                memberWechat = new MemberWechat()
                {
                    IsDel    = false,
                    MemberId = bindMemberTask.MemberId,
                    OpenId   = requestMessage.FromUserName
                };
                db.AddToMemberWechat(memberWechat);

                db.SaveChanges();

                responseMessage.Content = "绑定成功!";
            }
            else if (eventTask.Category == "Login")
            {
                var bindMemberTask = db.QueryMemberWeChatLoginTask()
                                     .Where(m => m.Code == sceneId.ToString())
                                     .FirstOrDefault();
                if (bindMemberTask == null || bindMemberTask.Status != MemberWeChatLoginTaskStatus.扫二维码进行中)
                {
                    responseMessage.Content = "您进行登陆的任务不存在或者已经完成";
                    return(responseMessage);
                }

                var memberWechat = db.QueryMemberWechat()
                                   .Where(m => m.OpenId == requestMessage.FromUserName)
                                   .Where(m => !m.IsDel)
                                   .FirstOrDefault();
                if (memberWechat == null)
                {
                    responseMessage.Content = "您未绑定微信,登陆失败!";
                    return(responseMessage);
                }
                bindMemberTask.OpenId = requestMessage.FromUserName;
                bindMemberTask.Status = MemberWeChatLoginTaskStatus.扫二维码完成;
                db.SaveChanges();

                responseMessage.Content = "您进行了扫码登陆,登陆时间" + DateTime.Now.ToString() + ".";
            }
            else
            {
                return(base.OnEvent_ScanRequest(requestMessage));
            }

            return(responseMessage);
        }