using JiepeiWMS.Common.Config;
using JiepeiWMS.Common.Helper;
using JiepeiWMS.IRepository.Base;
using JiepeiWMS.IRepository.UnitOfWork;
using JiepeiWMS.IServices;
using JiepeiWMS.Model.Models;
using JiepeiWMS.Services.BASE;
using System;
using System.Linq;
using System.Threading.Tasks;
namespace JiepeiWMS.FrameWork.Services
{
///
/// sysUserInfoServices
///
public class SysUserInfoServices : BaseServices, ISysUserInfoServices
{
IBaseRepository _dal;
IUserRoleServices _userRoleServices;
IBaseRepository _roleRepository;
IDepartmentServices _departmentServices;
IRoleModulePermissionServices _roleModulePermissionServices;
IUnitOfWork _DB;
public SysUserInfoServices(IBaseRepository dal, IUserRoleServices userRoleServices, IBaseRepository roleRepository, IDepartmentServices DepartmentServices, IRoleModulePermissionServices RoleModulePermissionServices, IUnitOfWork DB)
{
this._dal = dal;
this._userRoleServices = userRoleServices;
this._roleRepository = roleRepository;
this._departmentServices = DepartmentServices;
this._roleModulePermissionServices = RoleModulePermissionServices;
this._DB = DB;
base.BaseDal = dal;
}
///
///
///
///
///
///
public async Task SaveUserInfo(string loginName, string loginPwd)
{
sysUserInfo sysUserInfo = new sysUserInfo(loginName, loginPwd);
sysUserInfo model = new sysUserInfo();
var userList = await base.Query(a => a.uLoginName == sysUserInfo.uLoginName && a.uLoginPWD == sysUserInfo.uLoginPWD);
if (userList.Count > 0)
{
model = userList.FirstOrDefault();
}
else
{
var id = await base.Add(sysUserInfo);
model = await base.QueryById(id);
}
return model;
}
///
///
///
///
///
///
public async Task GetUserRoleNameStr(string loginName, string loginPwd)
{
string roleName = "";
var user = (await base.Query(a => a.uLoginName == loginName && a.uLoginPWD == loginPwd)).FirstOrDefault();
//判断如果查询的用户名为空就用工号登录
if (user == null)
{
user = (await base.Query(a => a.JobNo == loginName && a.uLoginPWD == loginPwd)).FirstOrDefault();
}
var roleList = await _roleRepository.Query(a => a.IsDeleted == false);
if (user != null)
{
var userRoles = await _userRoleServices.Query(ur => ur.UserId == user.uID);
if (userRoles.Count > 0)
{
var arr = userRoles.Select(ur => ur.RoleId.ObjToString()).ToList();
var roles = roleList.Where(d => arr.Contains(d.Id.ObjToString()));
roleName = string.Join(',', roles.Select(r => r.Name).ToArray());
}
}
return roleName;
}
///
/// 用户是否在指定角色中 add by wyb 2020/9/3
///
///
///
///
public async Task IsUserIdIntoRoleName(int UserId, params string[] RoleNames)
{
var sql = @"
SELECT * FROM sysUserInfo where uID in (
SELECT top 1 [UserId] Id FROM UserRole where RoleId in (
SELECT [RoleId] FROM Role where Name in('" + string.Join("','", RoleNames.Select(t => t.Replace("'", "''"))) + @"')
) and UserId=" + UserId + @"
)";
var userlist = await this.BaseDal.QuerySql(sql);
var user = userlist.FirstOrDefault();
if (user == null) { return false; }
return true;
}
///
/// OA用户回调
///
///
public async Task> BindingUser(string realName, string jobNo, int sex, int orgId)
{
var id = 0;
var error = "";
var now = DateTime.Now;
try
{
_DB.BeginTran();
var model = await base.GetModel(x => x.uRealName == realName && x.JobNo == jobNo);
if (model == null)
{
var departmentModel = await _departmentServices.GetModel(x => x.Name.Contains("生产"));
if (departmentModel != null)
{
//添加用户
var UserInfo = new sysUserInfo
{
uLoginName = PinYinHelper.ConvertToAllSpell(realName),
uLoginPWD = MD5Helper.MD5Encrypt32("123456"),
uRealName = realName,
uStatus = 0,
uCreateTime = now,
uErrorCount = 0,
sex = sex,
age = 0,
birth = now,
tdIsDelete = false,
JobNo = jobNo,
DepartmentId = departmentModel.Id,//默认生产部门
SysOrgId = orgId
//Mobile = mobile
};
var userResult = await base.Add(UserInfo);
if (userResult > 0)
{
var roleModel = await _roleRepository.GetModel(x => x.Name == RoleConfig.ProductionAgentStaff);
if (roleModel != null)
{
//添加用户角色关系
var UserRole = new UserRole
{
IsDeleted = false,
UserId = userResult,
RoleId = roleModel.Id,
CreateId = userResult,
CreateTime = now
};
var userRoleResult = await _userRoleServices.Add(UserRole);
if (userRoleResult > 0)
{
//角色模块权限关系表里无数据才添加有主体的权限
var roleModulePermissionModel = await _roleModulePermissionServices.GetModel(x => x.RoleId == roleModel.Id && x.SysOrgId == orgId);
if (roleModulePermissionModel == null)
{
//添加角色模块权限关系
var roleModulePermissionList = await _roleModulePermissionServices.Query(x => x.RoleId == roleModel.Id);
var roleModulePermissionList2 = roleModulePermissionList.Where(x => x.SysOrgId == roleModulePermissionList.Min(x => x.SysOrgId)).ToList();
if (roleModulePermissionList2 != null && roleModulePermissionList2.Any())
{
foreach (var item in roleModulePermissionList2)
{
item.CreateTime = now;
item.ModifyTime = now;
item.SysOrgId = orgId;
}
var roleModulePermissionResult = await _roleModulePermissionServices.Add(roleModulePermissionList2);
if (roleModulePermissionResult <= 0)
{
_DB.RollbackTran();
error = "添加角色模块权限关系失败";
}
}
}
_DB.CommitTran();
id = userResult;
return new Tuple(error, id);
}
else
{
_DB.RollbackTran();
error = "添加用户角色关系失败";
}
}
else
{
_DB.RollbackTran();
error = "无相关角色";
}
}
else
{
_DB.RollbackTran();
error = "添加用户失败";
}
}
}
id = model.uID;
return new Tuple(error, id);
}
catch (Exception ex)
{
_DB.RollbackTran();
return new Tuple(ex.ObjToString(), id);
}
}
///
/// 初始化菜单
///
///
public async Task> InitializePermission(string realName, int orgId, string roleName)
{
var id = 0;
var error = "";
var now = DateTime.Now;
try
{
_DB.BeginTran();
var model = await base.GetModel(x => x.uLoginName == realName);
if (model != null)
{
var roleModel = await _roleRepository.GetModel(x => x.Name.Contains(roleName));
if (roleModel != null)
{
var userRoleModel = await _userRoleServices.GetModel(x => x.UserId == model.uID);
if (userRoleModel == null)
{
//添加用户角色关系
var UserRole = new UserRole
{
IsDeleted = false,
UserId = model.uID,
RoleId = roleModel.Id,
CreateId = model.uID,
CreateTime = now
};
var userRoleResult = await _userRoleServices.Add(UserRole);
if (userRoleResult > 0)
{
//角色模块权限关系表里无数据才添加有主体的权限
var roleModulePermissionModel = await _roleModulePermissionServices.GetModel(x => x.RoleId == roleModel.Id && x.SysOrgId == orgId);
if (roleModulePermissionModel == null)
{
//添加角色模块权限关系
var roleModulePermissionList = await _roleModulePermissionServices.Query(x => x.RoleId == roleModel.Id);
var roleModulePermissionList2 = roleModulePermissionList.Where(x => x.SysOrgId == roleModulePermissionList.Min(x => x.SysOrgId)).ToList();
if (roleModulePermissionList2 != null && roleModulePermissionList2.Any())
{
foreach (var item in roleModulePermissionList2)
{
item.CreateTime = now;
item.ModifyTime = now;
item.SysOrgId = orgId;
}
var roleModulePermissionResult = await _roleModulePermissionServices.Add(roleModulePermissionList2);
if (roleModulePermissionResult <= 0)
{
_DB.RollbackTran();
error = "添加角色模块权限关系失败";
}
else
{
_DB.CommitTran();
}
}
}
}
else
{
_DB.RollbackTran();
error = "添加用户角色关系失败";
}
}
}
else
{
_DB.RollbackTran();
error = "无相关角色";
}
id = model.uID;
}
else
{
_DB.RollbackTran();
error = "无相关用户";
}
return new Tuple(error, id);
}
catch (Exception ex)
{
_DB.RollbackTran();
return new Tuple(ex.ObjToString(), id);
}
}
}
}
//----------sysUserInfo结束----------