示例#1
0
        public ActionResult SendMessage(string content, string fromUserID, string formID, string toUserID)
        {
            Common.WeChat.IConfig config = new Common.WeChat.ConfigMini();
            var    appID    = config.AppID;
            var    toUser   = db.Users.FirstOrDefault(s => s.Id == toUserID);
            var    option   = new Bll.Users.UserOpenID(toUser);
            var    e        = db.Enterprises.FirstOrDefault(s => s.ID == toUser.EnterpriseID);
            string openID   = option.SearchOpenID(appID);
            var    fromUser = db.Users.FirstOrDefault(s => s.Id == fromUserID);
            var    temp     = new Common.WeChat.WeChatMessageTemp.EDefaultNotifyWeChatMessage(e.Name, fromUser.NickName, content, DateTime.Now);
            var    result   = new Common.WeChat.WeChatMinApi(config)
                              .SendMessage(openID, formID, null, temp);

            return(Json(Comm.ToJsonResult("Success", "", result)));
        }
示例#2
0
        public ActionResult GetPhoneNumberFromWeChat(string userID, string iv, string encryptedData)
        {
            var user = db.Users.FirstOrDefault(s => s.Id == userID);

            if (user == null)
            {
                return(Json(Comm.ToJsonResult("UserNoFound", "用户不存在")));
            }
            if (db.CardPersonals.Any(s => s.UserID == userID))
            {
                return(Json(Comm.ToJsonResult("CardPersonalHadCreate", "该用户已经个人名片已存在"), JsonRequestBehavior.AllowGet));
            }
            //把数据中的OpenID取出
            var     userOpenIDs = new Bll.Users.UserOpenID(user);
            IConfig config      = new ConfigMiniPersonal();
            var     openID      = userOpenIDs.SearchOpenID(config.AppID);

            if (openID == null)
            {
                return(Json(Comm.ToJsonResult("OpenIDIsNull", "OpenID不存在"), JsonRequestBehavior.AllowGet));
            }
            string session = null;

            try
            {
                session = Jscode2sessionResultList.GetSession(openID);
            }
            catch (Exception ex)
            {
                return(Json(Comm.ToJsonResult("GetSessionFail", ex.Message), JsonRequestBehavior.AllowGet));
            }

            string mobile = null;

            try
            {
                mobile = Jscode2sessionResultList.AESDecryptPhoneNumber(encryptedData, session, iv);
            }
            catch (Exception)
            {
                Comm.WriteLog("CreateByWeChatPhoneDecrypt", JsonConvert.SerializeObject(new { encryptedData, session, iv }), Common.Enums.DebugLogLevel.Error);
                return(Json(Comm.ToJsonResult("DecryptFail", "解密失败,SessionKey过期,需要重新调用登录接口")));
            }
            return(Json(Comm.ToJsonResult("Success", "成功", mobile), JsonRequestBehavior.AllowGet));
        }
示例#3
0
 public void WeChatNofity(string userID, decimal amount, string content)
 {
     using (ApplicationDbContext db = new ApplicationDbContext())
     {
         var config = new Common.WeChat.ConfigMiniPersonal();
         Common.WeChat.WeChatMinApi wechat = new Common.WeChat.WeChatMinApi(config);
         var user   = db.Users.FirstOrDefault(s => s.Id == userID);
         var option = new Bll.Users.UserOpenID(user);
         var openID = option.SearchOpenID(config.AppID);
         var form   = db.WeChatMiniNotifyForms.FirstOrDefault(s => s.AppID == config.AppID &&
                                                              s.UserID == userID &&
                                                              s.EndDateTime > DateTime.Now);
         if (form != null)
         {
             var temp = new Common.WeChat.WeChatMessageTemp.PReceivableNotifyWeChatMessage(amount, content, DateTime.Now);
             wechat.SendMessage(openID, form.FormID, null, temp);
             db.WeChatMiniNotifyForms.Remove(form);
             db.SaveChanges();
         }
     }
 }
示例#4
0
        /// <summary>
        /// 注册VIP
        /// </summary>
        /// <param name="userID">用户ID</param>
        /// <param name="iv">手机号</param>
        /// <param name="code"></param>
        /// <returns></returns>
        public ActionResult CreateByWeChatPhone(string userID, string iv, string encryptedData, string code)
        {
            var user = db.Users.FirstOrDefault(s => s.Id == userID);

            if (user == null)
            {
                return(Json(Comm.ToJsonResult("UserNoFound", "用户不存在")));
            }
            if (db.CardPersonals.Any(s => s.UserID == userID))
            {
                return(Json(Comm.ToJsonResult("CardPersonalHadCreate", "该用户已经个人名片已存在")));
            }
            //把数据中的OpenID取出
            var     userOpenIDs = new Bll.Users.UserOpenID(user);
            IConfig config      = new ConfigMiniPersonal();
            var     openID      = userOpenIDs.SearchOpenID(config.AppID);

            if (openID == null)
            {
                return(Json(Comm.ToJsonResult("OpenIDIsNull", "OpenID不存在")));
            }
            string session = null;

            try
            {
                session = Jscode2sessionResultList.GetSession(openID);
            }
            catch (Exception ex)
            {
                return(Json(Comm.ToJsonResult("GetSessionFail", ex.Message)));
            }

            string mobile = null;

            try
            {
                mobile = Jscode2sessionResultList.AESDecryptPhoneNumber(encryptedData, session, iv);
            }
            catch (Exception)
            {
                return(Json(Comm.ToJsonResult("DecryptFail", "解密失败,SessionKey过期,需要重新调用登录接口")));
            }

            if (db.Users.Any(s => s.PhoneNumber == mobile))
            {
                return(Json(Comm.ToJsonResult("MobileHadUsed", "手机号已被使用")));
            }

            //if (!Reg.IsMobile(mobile))
            //{
            //    return Json(Comm.ToJsonResult("Moblie Error", "手机号不正确"));
            //}


            Vip parentVip = null;

            if (!string.IsNullOrWhiteSpace(code))
            {
                //判断是否邀请码是否存在
                parentVip = db.Vips.FirstOrDefault(s => s.State == Common.Enums.VipState.Enable && s.Code == code);
                if (parentVip == null)
                {
                    return(Json(Comm.ToJsonResult("CodeNoFound", "邀请码不存在")));
                }
            }
            //保存用户手机号到用户表
            user.PhoneNumber = mobile;

            //把名片已知信息填到个人名片
            var card = new CardPersonal
            {
                UserID = userID,
                Avatar = user.Avatar,
                Enable = true,
                Gender = Common.Enums.Gender.NoSet,
                Name   = user.NickName,
                Mobile = mobile
            };

            db.CardPersonals.Add(card);
            db.SaveChanges();
            try
            {
                card.WeChatMiniQrCode = GetWeChatQrCode(card.ID);
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                Comm.WriteLog(this.GetType().ToString(), ex.Message, Common.Enums.DebugLogLevel.Error);
            }
            var result = new Bll.VipBLL().CreateVipRelation(userID, code);

            if (result.retCode == Comm.ReqResultCode.failed)
            {
                //回滚
                db.CardPersonals.Remove(card);
                db.SaveChanges();
                return(Json(Comm.ToJsonResult("Error", result.retMsg)));
            }
            return(Json(Comm.ToJsonResult("Success", "成功", new { PCardID = card.ID })));
        }
示例#5
0
文件: UserLogs.cs 项目: radtek/Aicard
        ///消息推送
        public static void NotifyByLog(UserLog log, Common.WeChat.IConfig config)
        {
            using (ApplicationDbContext db = new ApplicationDbContext())
            {
                var targetUser = db.Users.FirstOrDefault(s => s.Id == log.TargetUserID);
                var user       = db.Users.FirstOrDefault(s => s.Id == log.UserID);
                var wechat     = new Common.WeChat.WeChatMinApi(config);
                if (targetUser == null)
                {
                    return;
                    //throw new Exception("推送用户不存在");
                }
                var    userOpenID = new Bll.Users.UserOpenID(targetUser);
                string openID     = userOpenID.SearchOpenID(config.AppID);
                var    form       = db.WeChatMiniNotifyForms
                                    .FirstOrDefault(s => s.UserID == log.TargetUserID &&
                                                    s.EndDateTime > DateTime.Now);
                var fromUser = db.Users.FirstOrDefault(s => s.Id == log.UserID);
                if (form == null)
                {
                    return;
                }
                db.WeChatMiniNotifyForms.Remove(form);
                db.SaveChanges();
                Common.WeChat.WeChatMessageTemp.IWeChatMessageTemp iTempMessage;
                try
                {
                    switch (log.Type)
                    {
                    case UserLogType.CardPersonalRead:
                    {
                        iTempMessage = new Common.WeChat.WeChatMessageTemp.PNewUserNotifyWeChatMessage(fromUser.NickName, log.CreateDateTime);
                        wechat.SendMessage(openID, form.FormID, null, iTempMessage);
                    }
                    break;

                    case UserLogType.CardPersonalAddressNav:
                    case UserLogType.CardPersonalEmailCopy:
                    case UserLogType.CardPersonalEnterpriseCopy:
                    case UserLogType.CardPersonalMobileCall:
                    case UserLogType.CardPersonalLike:
                    case UserLogType.CardPersonalPhoneCall:
                    case UserLogType.CardPersonalSave:
                    case UserLogType.CardPersonalShare:
                    case UserLogType.CardPersonalWechat:
                    {
                        string content = null;
                        switch (log.Type)
                        {
                        case UserLogType.CardPersonalAddressNav:
                            content = "复制了您的地址";
                            break;

                        case UserLogType.CardPersonalEmailCopy:
                            content = "复制了您的邮箱";
                            break;

                        case UserLogType.CardPersonalEnterpriseCopy:
                            content = "复制了您的公司";
                            break;

                        case UserLogType.CardPersonalMobileCall:
                            content = "呼叫了您的手机";
                            break;

                        case UserLogType.CardPersonalLike:
                            content = "点赞了您的名片";
                            break;

                        case UserLogType.CardPersonalPhoneCall:
                            content = "呼叫了您的座机";
                            break;

                        case UserLogType.CardPersonalSave:
                            content = "保存了您的名片";
                            break;

                        case UserLogType.CardPersonalShare:
                            content = "分享了您的名片";
                            break;

                        case UserLogType.CardPersonalWechat:
                            content = "复制了您的微信号";
                            break;
                        }
                        iTempMessage = new Common.WeChat.WeChatMessageTemp.PDefaultNotifyWeChatMessage(fromUser.NickName, content, log.CreateDateTime);
                        wechat.SendMessage(openID, form.FormID, null, iTempMessage);
                    }
                    break;

                    default:
                        break;
                    }
                }
                catch (Exception ex)
                {
                }
                finally
                {
                }
            }
        }