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.
iot/projects/UserCenter/Api/ProjectController.cs

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)),
});
}
}
}