You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
3.2 KiB
92 lines
3.2 KiB
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<User> _userRepo;
|
|
private readonly IRepository<Role> _roleRepo;
|
|
private readonly IRepository<UserRole> _userRoleRepo;
|
|
|
|
public ProjectController(IConfiguration cfg,
|
|
IRepository<User> userRepo,
|
|
IRepository<Role> roleRepo,
|
|
IRepository<UserRole> 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)),
|
|
});
|
|
}
|
|
}
|
|
} |