Exemple #1
0
        public static WxUsers SetWxUserInfo(IWxUsersRepository repository, WxUserInfo userModel, PassTicketXmlInfo keys)
        {
            var result = repository.GetWxUsers(keys.wxuin) ?? new WxUsers();

            result.Uin        = keys.wxuin;
            result.UserName   = userModel.UserName;
            result.NickName   = userModel.NickName;
            result.HeadImgUrl = userModel.HeadImgUrl;
            result.PYInitial  = userModel.PYInitial;
            result.PYQuanPin  = userModel.PYQuanPin;
            result.StarFriend = userModel.StarFriend;
            result.Sex        = userModel.Sex;
            result.UpdateTime = DateTime.Now;

            //设置keys
            result.Detail.WxKeys.Ret         = keys.ret;
            result.Detail.WxKeys.Message     = keys.message;
            result.Detail.WxKeys.Skey        = keys.skey;
            result.Detail.WxKeys.WxSid       = keys.wxsid;
            result.Detail.WxKeys.WxUin       = keys.wxuin;
            result.Detail.WxKeys.PassTicket  = keys.pass_ticket;
            result.Detail.WxKeys.Isgrayscale = keys.isgrayscale;
            result.Detail.WxKeysJson         = JsonConvert.SerializeObject(result.Detail.WxKeys);

            if (result.Id <= 0)
            {
                repository.Add(result);
            }
            else
            {
                repository.Update(result);
            }
            return(result);
        }
Exemple #2
0
        public static int LoginSuccess(IWxUsersRepository repository, IWxFriendsRepository wxFriendsRepository,
                                       HttpResponse Response, IAuthCore authcore, string uuid, string tip, ref string url)
        {
            var status = WeiXinHelper.GetLoginStatus(uuid, tip, ref url);

            return(status);
        }
 public OpenApiController(IWxUsersRepository wxUsersRepository, IWxFriendsRepository wxFriendsRepository, IRedisHelper redisHelper, IOptions <AppConfig> appconfig)
 {
     _wxUsersRepository   = wxUsersRepository;
     _wxFriendsRepository = wxFriendsRepository;
     _redisHelper         = redisHelper;
     _appconfig           = appconfig;
 }
Exemple #4
0
        /// <summary>
        /// 登录初始化
        /// </summary>
        /// <returns></returns>
        public static void LoginInitialization(IWxUsersRepository repository, IWxFriendsRepository wxFriendsRepository, HttpResponse Response, IAuthCore authcore, string url)
        {
            var wxCookie = String.Empty;
            var keys     = WeiXinHelper.GetUserKeys(url, ref wxCookie);

            //计算域名
            string hosts = url.IndexOf("wx.qq.com") > 0 ? "wx.qq.com" : "wx2.qq.com";

            //获取用户信息
            var userInfo = WeiXinHelper.GetWxUserInfo(hosts, keys);
            //创建用户
            var userModel = WxUsers.SetWxUserInfo(repository, userInfo.User, keys);

            //设置基础操作域名
            userModel.SetWxHosts(hosts);
            //同步好友
            var friends = WeiXinHelper.GetWxFriends(hosts, keys.skey, wxCookie);

            userModel.SyncFriends(wxFriendsRepository, friends);
            //创建状态通知
            WeiXinHelper.StartWxStatusNotify(hosts, wxCookie, keys, userModel.UserName);

            //心跳检测转到前端
            Thread thread = new Thread(m => HeartbeatWxStatus(Response, hosts, wxCookie, keys, userInfo.SyncKey));

            thread.IsBackground = true;
            thread.Start();

            //添加缓存
            AuthCore.SetUin(Response, userModel.Uin);
            authcore.SetUserName(userModel.Uin, userModel.UserName);
            authcore.SetUserHosts(userModel.Uin, hosts);
            authcore.SetUserKeys(userModel.Uin, keys);
            authcore.SetUserCookie(userModel.Uin, wxCookie);
            authcore.SetUserSyncKeys(userModel.Uin, userInfo.SyncKey);
        }
Exemple #5
0
        public static bool SendMsgByRemarkName(IWxFriendsRepository wxFriendsRepository, IWxUsersRepository wxUsersRepository, IRedisHelper redisHelper,
                                               IOptions <AppConfig> appConfig, WebHookParam webHook)
        {
            AuthCore authCore    = new AuthCore(redisHelper);
            var      username    = authCore.GetUserName(appConfig.Value.UserUin);   //当前登录用户名称
            var      userHosts   = authCore.GetUserHosts(appConfig.Value.UserUin);  //当前登录用户操作域名
            var      userCookies = authCore.GetUserCookie(appConfig.Value.UserUin); //当前登录用户Cookies
            var      userKeys    = authCore.GetUserKeys(appConfig.Value.UserUin);   //当前登录用户秘钥


            var dbWxUser = wxUsersRepository.GetWxUsers(appConfig.Value.UserUin);//当前登录用户

            if (dbWxUser == null)
            {
                throw new CustomerException("未找到登录信息", -2);
            }
            var dbFriends = wxFriendsRepository.GetFriendByName(webHook.actor, dbWxUser.Uin);

            if (dbFriends == null)
            {
                throw new CustomerException("未找到好友信息", -1);                   //好友信息
            }
            return(WeiXinHelper.SendMsg(userHosts, webHook.text, dbFriends.UserName, dbWxUser.UserName, userKeys, userCookies));
        }
Exemple #6
0
 public LoginController(IAuthCore authcore, IWxUsersRepository repository, IWxFriendsRepository wxFriendsRepository)
 {
     _authcore            = authcore;
     _repository          = repository;
     _wxFriendsRepository = wxFriendsRepository;
 }