using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using JiepeiWMS.AuthHelper.OverWrite;
using JiepeiWMS.Common.Config;
using JiepeiWMS.Common.Helper;
using JiepeiWMS.Common.HttpContextUser;
using JiepeiWMS.Filter;
using JiepeiWMS.IRepository.UnitOfWork;
using JiepeiWMS.IServices;
using JiepeiWMS.Model;
using JiepeiWMS.Model.Models;
using JiepeiWMS.Model.ViewModels;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace JiepeiWMS.Controllers
{
///
/// 用户管理
///
[Route("api/[controller]/[action]")]
[ApiController]
[Authorize(Permissions.Name)]
public class UserController : ControllerBase
{
private readonly IUnitOfWork _unitOfWork;
readonly ISysUserInfoServices _sysUserInfoServices;
readonly IUserRoleServices _userRoleServices;
readonly IRoleServices _roleServices;
private readonly IUser _user;
private readonly ILogger _logger;
private readonly IDepartmentServices _departmentServices;
private readonly IUserSysOrgServices _BllUserSysOrg;
private readonly ISysOrgServices _BllSysOrg;
///
/// 构造函数
///
public UserController(IUnitOfWork unitOfWork, ISysUserInfoServices sysUserInfoServices,
IUserRoleServices userRoleServices, IRoleServices roleServices, IUser user, ILogger logger,
IDepartmentServices departmentServices, IUserSysOrgServices BllUserSysOrg, ISysOrgServices BllSysOrg)
{
_unitOfWork = unitOfWork;
_sysUserInfoServices = sysUserInfoServices;
_userRoleServices = userRoleServices;
_roleServices = roleServices;
_user = user;
_logger = logger;
_departmentServices = departmentServices;
_BllUserSysOrg = BllUserSysOrg;
_BllSysOrg = BllSysOrg;
}
///
/// 获取全部用户
///
///
///
///
// GET: api/User
[HttpGet]
public async Task>> Get(int page = 1, string key = "")
{
if (string.IsNullOrEmpty(key) || string.IsNullOrWhiteSpace(key))
{
key = "";
}
int intPageSize = 20;
var data = await _sysUserInfoServices.QueryPage(a => a.uStatus >= 0 && ((a.uLoginName != null && a.uLoginName.Contains(key.Trim())) || (a.uRealName != null && a.uRealName.Contains(key.Trim()))
|| (a.JobNo != null && a.JobNo.Contains(key.Trim()))
), page, intPageSize, " uID desc ");
#region MyRegion
// 这里可以封装到多表查询,此处简单处理
var allUserRoles = await _userRoleServices.Query(d => d.IsDeleted == false);
var allRoles = await _roleServices.Query(d => d.IsDeleted == false);
var allSysOrgIds = await _BllUserSysOrg.Query();
var sysUserInfos = data.data;
foreach (var item in sysUserInfos)
{
var currentUserRoles = allUserRoles.Where(d => d.UserId == item.uID).Select(d => d.RoleId).ToList();
item.RIDs = currentUserRoles;
item.RoleNames = allRoles.Where(d => currentUserRoles.Contains(d.Id)).Select(d => d.Name).ToList();
item.SysOrgIds = allSysOrgIds.Where(t => t.UserId == item.uID).Select(t => t.SysOrgId).ToList();
if (item.DepartmentId > 0)
{
var departmentModel = await _departmentServices.QueryById(item.DepartmentId);
if (departmentModel != null)
item.DepartMentName = departmentModel.Name;
}
item.uLoginPWD = "";
}
data.data = sysUserInfos;
#endregion
return new MessageModel>()
{
msg = "获取成功",
success = data.dataCount >= 0,
response = data
};
}
// GET: api/User/5
[HttpGet("{id}")]
[AllowAnonymous]
public string Get(string id)
{
_logger.LogError("test wrong");
return "value";
}
// GET: api/User/5
///
/// 获取用户详情根据token
/// 【无权限】
///
/// 令牌
///
[HttpGet]
[AllowAnonymous]
public async Task> GetInfoByToken(string token)
{
var data = new MessageModel();
if (!string.IsNullOrEmpty(token))
{
var tokenModel = JwtHelper.SerializeJwt(token);
if (tokenModel != null && tokenModel.Uid > 0)
{
var userinfo = await _sysUserInfoServices.QueryById(tokenModel.Uid);
if (userinfo != null)
{
data.response = userinfo;
data.success = true;
data.msg = "获取成功";
}
}
}
return data;
}
///
/// 添加一个用户
///
///
///
// POST: api/User
[HttpPost]
public async Task> Post([FromBody] sysUserInfo sysUserInfo)
{
var data = new MessageModel();
var userInfoModel = await _sysUserInfoServices.GetModel(x => x.JobNo == sysUserInfo.JobNo);
if (userInfoModel != null)
{
data.msg = "已有相同工号";
return data;
}
if (sysUserInfo!=null&&string.IsNullOrEmpty(sysUserInfo.Mobile))
{
sysUserInfo.Mobile = "15000000000";
}
sysUserInfo.uLoginPWD = MD5Helper.MD5Encrypt32(sysUserInfo.uLoginPWD);
var id = await _sysUserInfoServices.Add(sysUserInfo);
//更新主体关系
if (sysUserInfo.SysOrgIds.Count > 0)
{
var vals = new List