using Application.Domain.Entities; using Infrastructure.Data; using Infrastructure.Extensions; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using System; using System.Linq; namespace UserCenter.Controllers { [ApiVersion("1.0")] [Route("api/v{version:apiVersion}/[controller]/[action]")] [ApiController] public class ProjectController : ControllerBase { private readonly IConfiguration _cfg; private readonly IRepository _userRepo; private readonly IRepository _roleRepo; private readonly IRepository _userRoleRepo; public ProjectController(IConfiguration cfg, IRepository userRepo, IRepository roleRepo, IRepository userRoleRepo) { this._cfg = cfg; this._userRepo = userRepo; this._roleRepo = roleRepo; this._userRoleRepo = userRoleRepo; } [HttpGet] public IActionResult Update(string userName, string realName, string organName, string organNumber, string tamp, string role) { if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(organName)) { return Problem("参数不能为空"); } try { var user = this._userRepo.Table().FirstOrDefault(o => o.UserName == userName); if (user == null) { user = new User { UserName = userName, RealName = realName, Email = $"{userName}@test.com" }; this._userRepo.Add(user); } else { user.RealName = realName; } this._userRepo.SaveChanges(); var roles = role.Split(','); var userRoles = this._userRoleRepo.Table().Where(o => o.User.UserName == userName); if (roles.Any()) { foreach (var item in roles) { var role2 = _roleRepo.Table().FirstOrDefault(o => o.Name == item); if (role2 == null) { role2 = new Role { Name = item }; _roleRepo.Add(role2); _roleRepo.SaveChanges(); } if (!userRoles.Any(o => o.Role.Name == item)) { _userRoleRepo.Add(new UserRole { UserId = user.Id, RoleId = role2.Id }); _userRoleRepo.SaveChanges(); } } } } catch (Exception ex) { ex.PrintStack(); return Problem(ex.Message); } return Ok(new { AccessToken = Request.HttpContext.GetToken(userName, _cfg, DateTime.Now.AddYears(100)), RefreshToken = Request.HttpContext.GetToken(userName, _cfg, DateTime.Now.AddYears(100)), }); } } }