using CommonUtil;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Operater.DAL;
using Operater.DbModel;
using Operater.DTO.System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Api.Operater.Controllers
{
[Route(TopConstants.API_ROUTE)]
public class LoginController : BaseController
{
///
/// 登录
///
///
///
[HttpPost]
public IActionResult LoginCheck([FromBody] LoginCheckRequest request)
{
// string pwdEn = SecurityUtil.MD5Encrypt(request.Pwd, false);
var userInfo = new UserInfoDAL().ListGet(t => t.UserName == request.UserName && t.Pwd == request.Pwd);
if (userInfo.IsNull() || userInfo.Count == 0)
{
return Error("账号或密码错误!");
}
LoginCheckResponse loginCheckResponse = new LoginCheckResponse()
{
UserId = userInfo[0].ParentId,
SubUserId = userInfo[0].Id,
UserName = userInfo[0].NickName
};
//生成token
string enKey = "ophwuv2E1qyy6R2r";
TokenUserInfo tokenUserInfo = new TokenUserInfo()
{
Id = loginCheckResponse.UserId,
ExpirationTime = DateTime.Now.AddHours(5)
};
string EncryStr = SecurityUtil.AesEncrypt(JSONUtil.ObjectToJson(tokenUserInfo), enKey, "0102030405060708");
loginCheckResponse.LoginToken = EncryStr;
return Success(loginCheckResponse);
}
///
/// 获取账号信息
///
///
///
[HttpPost]
public IActionResult GetUserRole([FromBody] GetUserRoleRequest request)
{
var user = new UserInfoDAL().ListGet(t => t.Id == request.UserId);
if (user.IsNull() || user.Count == 0)
{
return Error("无账号信息");
}
//获取权限
List perId = new List();
if (user[0].UserType == 0)
{
perId.Add("admin");
}
else
{
var roles = new RoleSetDAL().GetById(user[0].RoleId);
perId = roles.Roles.Split(',').ToList();
}
List perList = new List();
foreach (string perItem in perId)
{
if (perItem.IsNullOrEmpty())
{
continue;
}
GetUserRolesPermissions per = new GetUserRolesPermissions()
{
roleId = user[0].Id,
permissionId = perItem
};
perList.Add(per);
}
GetUserRoles getUserRoles = new GetUserRoles()
{
id = user[0].Id,
name = user[0].UserName,
permissions = perList
};
GetUserRoleResult getUserRoleResult = new GetUserRoleResult()
{
Id = user[0].Id,
Name = user[0].NickName,
Username = user[0].UserName,
roleId = user[0].Id,
role = getUserRoles
};
GetUserRoleResponse response = new GetUserRoleResponse()
{
result = getUserRoleResult,
success = true
};
return Ok(response);
}
///
/// 获取子账号列表
///
///
///
[HttpPost]
public IActionResult GetSubAccountList([FromBody] GetSubAccountListRequest request)
{
int totalCount = 0;
var sublist = new UserInfoDAL().ListPageGet(t => t.UserType == 1, t => t.ModifyTime, DbEnum.OrderType.Desc, request.PageNo, request.PageSize, ref totalCount);
return Success(sublist, request.PageNo, request.PageSize, totalCount);
}
///
/// 获取子账号详情
///
///
///
[HttpPost]
public IActionResult GetSubAccountDetail([FromBody] GetSubAccountDetailRequest request)
{
var subItem = new UserInfoDAL().GetById(request.Id);
return Success(subItem);
}
///
/// 删除账号
///
///
[HttpPost]
public IActionResult DeleteSubAccount([FromBody] DeleteSubAccountRequest request)
{
var res = new UserInfoDAL().Delete(t => t.Id == request.Id && t.UserType == 1);
return Success(res == 1);
}
///
/// 新增用户
///
///
///
public IActionResult AddUser([FromBody] AddUserRequest request)
{
string userId = string.Empty;
if (new UserInfoDAL().IsExist(t => t.UserName == request.UserName))
{
return Error("账户名已存在,请重新设置");
}
while (true)
{
userId = GetRandomString(6);
if (userId.StartsWith("0"))
{
continue;
}
var hasExit = new UserInfoDAL().GetById(userId);
if (!hasExit.IsNull() && !hasExit.Id.IsNullOrEmpty())
{
continue;
}
break;
}
var mainUser = new UserInfoDAL().ListGet(t => t.UserType == 0);
string parentId = mainUser[0].Id;
string enPwd = SecurityUtil.MD5Encrypt(request.Pwd, false);
UserInfo userInfo = new UserInfo()
{
Id = userId,
UserName = request.UserName,
Pwd = enPwd,
ParentId = parentId,
Mobile = request.Mobile,
UserType = 1,
NickName = request.NickName,
ModifyTime = DateTime.Now,
RoleId=request.RoleId
};
var res = new UserInfoDAL().Insert(userInfo);
return Success(res);
}
///
/// 修改账号
///
///
///
[HttpPost]
public IActionResult UpdateAccount([FromBody] UpdateAccountRequest request)
{
if (new UserInfoDAL().IsExist(t => t.UserName == request.UserName && t.Id != request.Id))
{
return Error("账户名已存在,请重新设置");
}
string enPwd = SecurityUtil.MD5Encrypt(request.Pwd, false);
UserInfo userInfo = new UserInfo()
{
UserName = request.UserName,
Pwd = enPwd,
Mobile = request.Mobile,
UserType = 1,
NickName = request.NickName,
ModifyTime = DateTime.Now
};
var res = new UserInfoDAL().Update(userInfo, i => new { i.UserName, i.Pwd, i.Mobile, i.NickName, i.ModifyTime }, t => t.Id == request.Id);
return Success(res == 1);
}
public string GetRandomString(int len)
{
string s = "1234567890";
string reValue = string.Empty;
Random rd = new Random();
while (reValue.Length < len)
{
string s1 = s[rd.Next(0, s.Length)].ToString();
if (reValue.IndexOf(s1) == -1)
reValue += s1;
}
return reValue;
}
}
}