Exemplo n.º 1
0
        /// <summary>
        /// 绑定手机号
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public ApiResult BindMobile(RequestBingdMobileDTO model)
        {
            //并发检查  ,retrycount=0
            if (!$"BindMobile{model.Mobile}".Lock($"BindMobile{model.Mobile}", TimeSpan.FromSeconds(10), 200, 3))
            {
                throw new Exception("并发冲突");
            }

            var userid = GetUserIDByMobile(model.Mobile, EnumUserType.User);

            if (string.IsNullOrEmpty(userid))
            {
                var user = new Entity.User()
                {
                    Mobile   = model.Mobile,
                    UserType = EnumUserType.User
                };
                string reason;
                RegisterUser(user, out reason, model.OpenID, model.AppID);
                userid = user.UserID;
            }
            else
            {
                using (var db = new DBEntities())
                {
                    var map = db.UserWechatMaps.Where(t => t.OpenID == model.OpenID && t.AppID == model.AppID).FirstOrDefault();

                    if (map == null || map.IsDeleted)
                    {
                        if (map == null)
                        {
                            map = new UserWechatMap()
                            {
                                UserID = userid,
                                OpenID = model.OpenID,
                                AppID  = model.AppID,
                            };
                            db.UserWechatMaps.Add(map);
                        }
                        else
                        {
                            map.IsDeleted = false;
                        }
                        db.SaveChanges();

                        UserLoginServerTicketDTO serverTicket = new UserLoginServerTicketDTO()
                        {
                            OpenID = model.OpenID,
                            UserID = userid,
                        };
                        ApiSecurityService.SetUserTicket(serverTicket, model.UserToken);
                    }
                }
            }

            return(userid.ToApiResultForObject());
        }
Exemplo n.º 2
0
        public ApiResult BindMobile([FromBody] RequestBingdMobileDTO model)
        {
            if (model != null)
            {
                var user = CurrentOperatorUser;

                if (user == null)
                {
                    return(EnumApiStatus.BizError.ToApiResultForApiStatus());
                }
                model.OpenID    = user.OpenID;
                model.AppID     = XuHos.Integration.WechatApp.Configuration.WechatAppID;
                model.UserToken = SecurityHelper.UserToken;
                return(userService.BindMobile(model));
            }
            else
            {
                return(EnumApiStatus.BizError.ToApiResultForApiStatus());
            }
        }