/// <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()); }
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()); } }