Ejemplo n.º 1
0
        public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo)
        {
            log4net.ILog log = log4net.LogManager.GetLogger("ColoredConsoleAppender");


            var info = RequestUserInfo.ParseFrom(requestInfo.Body);

            DAL.DAL.Business business = new DAL.DAL.Business();
            //获取用户积分消费卷信息
            IntegralInfo integralInfo = business.GetIntegralInfo(info.UserID);

            byte[] data = null;
            if (integralInfo == null)
            {
                log.Error("用户不存在");
                business.InsertIntegralInfo(info.UserID);
                data = ResponseUserInfo.CreateBuilder().SetUserID(info.UserID).SetRoomCard(0).SetIntegral(0).SetCoupons(0).Build().ToByteArray();
                session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(10041, data.Length, requestInfo.MessageNum, data)));
                session.Close();
                return;
            }
            data = ResponseUserInfo.CreateBuilder().SetUserID(integralInfo.userID).SetRoomCard((int)integralInfo.roomCard).SetIntegral((double)integralInfo.integral).SetCoupons((double)integralInfo.coupons).Build().ToByteArray();
            session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(10041, data.Length, requestInfo.MessageNum, data)));
            session.Close();
            return;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 更新用户信息,不存在则创建
        /// </summary>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        private async Task <IUser> UpdateUserAsync(ResponseUserInfo userInfo)
        {
            var user = await _userService.FindByNameAsync(userInfo.Name);

            var names  = new[] { nameof(IUser.Name), nameof(IUser.DisplayName), nameof(IUser.Avatar), nameof(IUser.Sex), };
            var values = new object[] { userInfo.Name, userInfo.DisplayName, userInfo.Avatar, userInfo.Sex };

            if (user == null)
            {
                // 创建用户没有密码会报错
                var nList = new List <string>(names);
                nList.Add(nameof(IUser.Password));
                var vList = new List <object>(values);
                vList.Add("123456");
                await _userService.CreateAsync(names, values);
            }
            else
            {
                await _userService.UpdateAsync(names, values);
            }

            user = await _userService.FindByNameAsync(userInfo.Name);

            return(user);
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Login([FromBody] LoginViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByNameAsync(model.Login);

                if (user != null)
                {
                    if (!await _userManager.IsEmailConfirmedAsync(user))
                    {
                        ModelState.AddModelError(string.Empty, "You did not verify your email address");
                        return(View(model));
                    }
                }
                var result =
                    await _signInManager.PasswordSignInAsync(model.Login, model.Password, false, false);

                if (!result.Succeeded)
                {
                    ModelState.AddModelError("", "Incorrect login and(or) password");
                }
                else
                {
                    DateTime    thisDay     = DateTime.Now;
                    UserProfile userProfile = _db.UserProfile.FirstOrDefault(p => p.User.UserName == model.Login);
                    userProfile.LastLogInDate = thisDay.ToString();
                    ResponseUserInfo responseUserInfo = new ResponseUserInfo {
                        Id = userProfile.Id, Login = userProfile.User.UserName, Color = userProfile.Color, Language = userProfile.Language, Role = userProfile.Role, Token = userProfile.User.SecurityStamp
                    };
                    _db.SaveChanges();
                    return(Ok(responseUserInfo));
                }
            }
            return(BadRequest(ModelState));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 数据转换组装 输出数据
        /// </summary>
        /// <returns></returns>
        private ResponseUserInfo UserDataChange(UsersModel user)
        {
            ResponseUserInfo resu = new ResponseUserInfo()
            {
                mobilephone = user.mobilephone,
                nickname    = user.nickname,
                city        = user.city,
                province    = user.province,
                country     = user.country,
                gender      = user.sex.ToString()
            };

            return(resu);
        }
Ejemplo n.º 5
0
        public ApiResult <ResponseUserInfo> GetUserInfo()
        {
            //var principal = User;
            var identity = User.Identity as IUser;

            if (identity == null)
            {
                throw ApiException.Common(RequestLocalizer["User type error"], 500);
            }

            var data = new ResponseUserInfo();

            data.Copy(identity, false, "Roles");
            data.SetRoles(identity.Roles);

            return(ApiResult.Ok(data));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 根据用户信息
        /// </summary>
        /// <param name="openid"></param>
        /// <param name="access_token"></param>
        /// <returns></returns>
        public ResponseUserInfo GetOAUserInfo(string openid, string access_token)
        {
            string param = string.Format("?access_token={0}&openid={1}&lang=zh_CN", access_token, openid);
            string res   = HttpHelper.HttpGet(WechatRequestUrlUtil.UserInfoUrl + param);//get请求token

            if (!string.IsNullOrEmpty(res))
            {
                ResponseUserInfo u = JsonConvert.DeserializeObject <ResponseUserInfo>(res);
                if (u.errcode != 0)
                {
                    LogHelper.WarnLog("警告:根据用户基本信息异常,异常代码" + u.errcode + ",异常描述" + u.errmsg);
                }
                return(u);
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 创建登录记录
        /// </summary>
        /// <param name="userInfo"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        private async Task <AuthenticateResult> LocalSignIn(ResponseUserInfo userInfo, string token)
        {
            var u = await UpdateUserAsync(userInfo);

            var uc = UserConnect.FindByProviderAndOpenID(Idp, userInfo.Name) ?? new UserConnect
            {
                Provider = Idp,
                UserID   = u.ID,
                OpenID   = userInfo.Name,
                LinkID   = userInfo.ID.ToInt(),
                Enable   = true
            };

            uc.AccessToken = token;
            uc.Avatar      = userInfo.Avatar;
            uc.NickName    = userInfo.DisplayName;
            uc.Expire      = GetExpire(token);
            uc.Save();

            return(GetAuthenticateResult(uc));
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 获取房卡
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        public static long GetRoomCard(long userID)
        {
            var data = RequestUserInfo.CreateBuilder().SetUserID(userID.ToString()).Build().ToByteArray();

            try
            {
                var resData = new MySocket(host, port).SendReceive(CreateHead.CreateMessage(10040, data.Length, 0, data));
                if (resData.FirstOrDefault() != null)
                {
                    var roomcard = ResponseUserInfo.ParseFrom(resData.FirstOrDefault().Data).RoomCard;
                    // MyLogger.Logger.Info("请求房卡:" + roomcard);
                    return(roomcard);
                }
            }
            catch (Exception ex)
            {
                MyLogger.Logger.Error("请求扣除房卡异常:" + ex);
            }
            return(0);

            //测试
            // return 5000;
        }
Ejemplo n.º 9
0
        public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo)
        {
            log4net.ILog log = log4net.LogManager.GetLogger("ColoredConsoleAppender");
            //  ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

            var info = RoomCardBusiness.ParseFrom(requestInfo.Body);

            DAL.DAL.Business business = new DAL.DAL.Business();


            //获取用户积分消费卷信息
            IntegralInfo integralInfo = business.GetIntegralInfo(info.UserID);

            if (integralInfo == null)
            {
                log.Error("用户不存在");
                business.InsertIntegralInfo(info.UserID);
                var data = ResponseUserInfo.CreateBuilder().SetUserID(info.UserID).SetRoomCard(0).SetIntegral(0).SetCoupons(0).Build().ToByteArray();
                session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(10041, data.Length, requestInfo.MessageNum, data)));
                session.Close();
                return;
            }
            #region 以前代码 可能有用
            ////获取业务信息
            //BusinessModel businessInfo = business.SelectBusiness(info.BusinessID);
            //if (businessInfo == null)
            //{

            //    log.Error("该业务不存在");
            //    var data = Result.CreateBuilder().SetStatus(0).SetMessage("该业务不存在").Build().ToByteArray();
            //    session.Send(new ArraySegment<byte>(CreateHead.CreateMessage(10001, data.Length, requestInfo.MessageNum, data)));
            //    session.Close();
            //    return;
            //}


            ////获取操作方式
            //ActionModel actionInfo = business.SelectAction(businessInfo.action_id);


            ////判断余额是否充足
            //if (actionInfo.action=="-")
            //{
            //    if (business.GetIntegralInfo(info.UserID, businessInfo.type) - info.Counts < 0)
            //    {
            //        var data = Result.CreateBuilder().SetStatus(0).SetMessage("当前余量不足").Build().ToByteArray();
            //        session.Send(new ArraySegment<byte>(CreateHead.CreateMessage(10001, data.Length, requestInfo.MessageNum, data)));
            //        session.Close();
            //        return;
            //    }

            //}
            //integralInfo = business.UpdateIntegralInfo(info.UserID, businessInfo.type, actionInfo, info.Counts);
            #endregion
            // 处理业务 更新积分信息并返回

            decimal newRoomCard = integralInfo.roomCard - info.Counts;

            if (newRoomCard < 0)
            {
                var data = Result.CreateBuilder().SetStatus(0).SetMessage("当前余量不足").Build().ToByteArray();
                session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(10001, data.Length, requestInfo.MessageNum, data)));
                session.Close();
                return;
            }

            bool reslut = business.UpdataRoomCard(info.UserID, newRoomCard);
            if (!reslut)
            {
                var dataResult1 = Result.CreateBuilder().SetStatus(0).SetMessage("更新失败").Build().ToByteArray();
                session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(10001, dataResult1.Length, requestInfo.MessageNum, dataResult1)));
                session.Close();
                return;
            }


            log.Info("更新成功");
            var dataResult = Result.CreateBuilder().SetStatus(1).SetMessage("更新成功").Build().ToByteArray();
            session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(10001, dataResult.Length, requestInfo.MessageNum, dataResult)));
            //session.Send("更新成功");

            //写入日志
            //var logModel = new LogModel
            //{
            //    userID = info.UserID,
            //    action = info.BusinessID,
            //    business = info.BusinessID,
            //    type = info.BusinessID,
            //    count = info.Counts,
            //    dateTime = DateTime.Now,
            //};
            //business.WriteLog(logModel);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 小程序用户信息
        /// </summary>
        /// <returns></returns>
        public string GetAppletUserInfo(string reqdata)
        {
            ResponseUserInfo res = new ResponseUserInfo();

            try
            {
                //RequestUserInfo reqstr = new RequestUserInfo();
                RequestUserInfo reqstr = JsonConvert.DeserializeObject <RequestUserInfo>(reqdata);                      //请求参数反序列化
                LogHelper.InfoLog("GetAppletUserInfo请求参数:" + reqdata);
                string          userdata  = AES_decrypt(reqstr.userEncryptedData, reqstr.session_key, reqstr.userIv);   //微信用户信息解密
                WeChatUserData  user      = JsonConvert.DeserializeObject <WeChatUserData>(userdata);
                string          phonedata = AES_decrypt(reqstr.phoneEncryptedData, reqstr.session_key, reqstr.phoneIv); //联系方式数据解密
                WeChatPhoneData phone     = JsonConvert.DeserializeObject <WeChatPhoneData>(phonedata);
                LogHelper.InfoLog("用户信息解密:" + userdata + ",联系方式数据解密:" + phonedata);

                UsersModel        userinfo = new UsersModel();
                List <UsersModel> users    = userdal.GetUserInfo(new UsersModel()
                {
                    unionid = reqstr.unionid
                });
                if (users.Count > 0)
                {
                    if (string.IsNullOrEmpty(users[0].mobilephone) || string.IsNullOrEmpty(users[0].appletopenid))//手机号或者小程序openid为空则需要修改数据库的用户信息
                    {
                        userdal.UpdateUserInfo(userinfo);
                    }
                    userinfo          = UserDataChange(user, phone, reqstr.session_key); //入库数据转换组装
                    res               = UserDataChange(userinfo);                        //输出数据转换组装
                    res.code          = 0;
                    res.msg           = "查询成功";
                    res.mobilephone   = users[0].mobilephone;
                    res.companyname   = users[0].companyname;
                    res.emcompany     = users[0].emcompany;
                    res.stockcompany  = users[0].stockcompany;
                    res.empowerStatus = (string.IsNullOrEmpty(users[0].emcompany) && string.IsNullOrEmpty(users[0].emcompany) ? 0 : 1);
                    res.oastatus      = users[0].status;
                }
                else//数据库没有当前用户去入库
                {
                    userinfo = UserDataChange(user, phone, reqstr.session_key);//入库数据转换组装
                    if (userdal.AddUser(userinfo))
                    {
                        res.code = 0;
                        res.msg  = "操作成功";
                    }
                    else
                    {
                        res.code = 10002;
                        res.msg  = "开小差了...";
                    }
                    res               = UserDataChange(userinfo);//输出数据转换组装
                    res.mobilephone   = "";
                    res.companyname   = "";
                    res.emcompany     = "";
                    res.stockcompany  = "";
                    res.empowerStatus = 0;
                    res.oastatus      = 0;
                }
            }
            catch (Exception ex)
            {
                res.code = 10003;
                res.msg  = "开小差了...";
                LogHelper.ErrorLog("错误信息:" + ex.StackTrace + "\r\n" + ex.Message + "\r\n请求参数:" + reqdata);
            }
            return(JsonConvert.SerializeObject(res));
        }