| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Security.Claims; |
| | | using System.Security.Cryptography; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | |
| | | /// <returns></returns> |
| | | public async Task<LoginCommandCallback> Handle(WxmpLoginCommand request, CancellationToken cancellationToken) |
| | | { |
| | | if (request.Type == EnumUserType.Operation) |
| | | { |
| | | throw Oops.Oh(EnumErrorCodeType.s400, "不支持该类型账号登录"); |
| | | } |
| | | var snsJscode2session = await wxmpUtils.SnsJscode2sessionAsync(request.Type, request.Code, cancellationToken); |
| | | var user = await rep.AsQueryable().AsNoTracking() |
| | | .Where(it => it.WxmpOpenId == snsJscode2session.openid && it.Type == request.Type) |
| | | .FirstOrDefaultAsync(cancellationToken); |
| | | if (user == null && request.Type == EnumUserType.Personal) |
| | | if (user == null) |
| | | { |
| | | user = new User |
| | | { |
| | |
| | | /// <exception cref="NotImplementedException"></exception> |
| | | public async Task<LoginCommandCallback> Handle(BindWxmpUserInfoCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var claims = JWTEncryption.ReadJwtToken(request.AccessToken).Claims; |
| | | var claimIdentity = new ClaimsIdentity("AuthenticationTypes.Federation"); |
| | | claimIdentity.AddClaims(claims); |
| | | var claimsPrincipal = new ClaimsPrincipal(claimIdentity); |
| | | var id = claimsPrincipal.FindFirstValue("Id").ToGuid(); |
| | | var type = claimsPrincipal.FindFirstValue("Type").ToEnum<EnumUserType>(); |
| | | |
| | | var user = await rep.AsQueryable() |
| | | .Where(it => it.Type == logier.Type && it.Id == logier.Id) |
| | | .Where(it => it.Type == type && it.Id == id) |
| | | .FirstOrDefaultAsync(cancellationToken); |
| | | if (user == null) throw Oops.Oh(EnumErrorCodeType.s404, "当前账号"); |
| | | if (user.WxmpOpenId.IsNull()) throw Oops.Oh(EnumUserErrorCodeType.u1100); |
| | |
| | | } |
| | | |
| | | var bindPhoneNumberUser = await rep.AsQueryable() |
| | | .Where(it => it.Type == logier.Type && it.PhoneNumber == info.PhoneNumber && it.Id != user.Id) |
| | | .Where(it => it.Type == type && it.PhoneNumber == info.PhoneNumber && it.Id != user.Id) |
| | | .FirstOrDefaultAsync(cancellationToken); |
| | | if (bindPhoneNumberUser == null) |
| | | { |
| | | if (type == EnumUserType.Enterprise) |
| | | { |
| | | throw Oops.Oh(EnumErrorCodeType.s404, "该账号"); |
| | | } |
| | | user.PhoneNumber = info.PhoneNumber; |
| | | user.ContactPhoneNumber = info.PhoneNumber; |
| | | user.IsCheckPhoneNumber = true; |
| | |
| | | var model = await rep.GetPersonalQueryable(true) |
| | | .GetDetail<User, GetPersonalLoginInfoQueryResult>(cancellationToken); |
| | | var taskUserQueryable = rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() |
| | | .Where(it => it.UserId == model.Id); |
| | | .Where(it => it.EnterpriseEmployee.UserId == model.Id); |
| | | model.TaskCount = await taskUserQueryable.CountAsync(); |
| | | model.HirePassTaskCount = await taskUserQueryable.CountAsync(it => it.HireStatus == EnumTaskUserHireStatus.Pass); |
| | | model.HireRefuseTaskCount = await taskUserQueryable.CountAsync(it => it.HireStatus == EnumTaskUserHireStatus.Refuse); |
| | | model.HirePassTaskCount = await taskUserQueryable.CountAsync(it => it.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass); |
| | | model.HireRefuseTaskCount = await taskUserQueryable.CountAsync(it => it.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Refuse); |
| | | return model; |
| | | } |
| | | |