|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Threading.Tasks;
|
|
|
using DocumentFormat.OpenXml.Spreadsheet;
|
|
|
using DocumentFormat.OpenXml.Wordprocessing;
|
|
|
using Infrastructure;
|
|
|
using Infrastructure.Extensions;
|
|
|
using Infrastructure.Helpers;
|
|
|
using Infrastructure.Utilities;
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
using NetModular.DocX.Core;
|
|
|
using NPOI.HSSF.UserModel;
|
|
|
using NPOI.SS.Formula.Functions;
|
|
|
using NPOI.SS.UserModel;
|
|
|
using NPOI.XSSF.UserModel;
|
|
|
using OpenAuth.App.Base;
|
|
|
using OpenAuth.App.BaseApp.Base;
|
|
|
using OpenAuth.App.Config;
|
|
|
using OpenAuth.App.Interface;
|
|
|
using OpenAuth.App.Request;
|
|
|
using OpenAuth.App.Response;
|
|
|
using OpenAuth.Repository;
|
|
|
using OpenAuth.Repository.Domain;
|
|
|
using SixLabors.ImageSharp;
|
|
|
using SqlSugar;
|
|
|
using Yitter.IdGenerator;
|
|
|
using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData;
|
|
|
|
|
|
namespace OpenAuth.App
|
|
|
{
|
|
|
public class UserManagerApp : SqlSugarBaseApp<SysUser, SugarDbContext>
|
|
|
{
|
|
|
private ISqlSugarClient client;
|
|
|
|
|
|
#region 构造函数
|
|
|
public UserManagerApp(
|
|
|
ISugarUnitOfWork<SugarDbContext> unitWork,
|
|
|
ISimpleClient<SysUser> repository,
|
|
|
IAuth auth,
|
|
|
ISqlSugarClient sqlSugarClient
|
|
|
) : base(unitWork, repository, auth)
|
|
|
{
|
|
|
this.client = sqlSugarClient;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 用户查询
|
|
|
|
|
|
public async Task<Response<PageInfo<List<dynamic>>>> LoadAll(QueryUserListReq request)
|
|
|
{
|
|
|
RefAsync<int> totalNumber = 0;
|
|
|
//过滤orgid传参
|
|
|
List<long> dpt = new List<long>();
|
|
|
if (request.orgId != 0)
|
|
|
{
|
|
|
dpt = client.Queryable<SysOrg>().ToChildList(it => it.ParentId, request.orgId)?.Select(it => it.Id).ToList();
|
|
|
}
|
|
|
var aa = client.Queryable<SysUserOrg>().Where(r => dpt.Contains(r.OrgId)).ToList();
|
|
|
var table = await base.Repository.AsQueryable()
|
|
|
.WhereIF(!string.IsNullOrEmpty(request.key), u => u.Account.Contains(request.key) || u.Name.Contains(request.key))
|
|
|
.LeftJoin<SysUserOrg>((u, o) => u.Id == o.UserId)
|
|
|
.WhereIF(request.orgId != 0, (u, o) => dpt.Contains(o.OrgId))
|
|
|
.OrderByDescending((u, o) => u.CreateTime)
|
|
|
.Distinct()
|
|
|
.Select<dynamic>((u, o) => new
|
|
|
{
|
|
|
id = u.Id,
|
|
|
account = u.Account,
|
|
|
name = u.Name,
|
|
|
createtime = u.CreateTime,
|
|
|
department = SqlFunc.Subqueryable<SysUserOrg>().Where(a => a.UserId == u.Id).LeftJoin<SysOrg>((a, o) => a.OrgId == o.Id).SelectStringJoin((a, o) => o.Name, ","),
|
|
|
role = SqlFunc.Subqueryable<SysUserRole>().Where(a => a.UserId == u.Id).LeftJoin<SysRole>((a, o) => a.RoleId == o.Id).SelectStringJoin((a, o) => o.Name, ","),
|
|
|
})
|
|
|
.ToPageListAsync(request.page, request.limit, totalNumber);
|
|
|
|
|
|
return new Response<PageInfo<List<dynamic>>>()
|
|
|
{
|
|
|
Result = new PageInfo<List<dynamic>>
|
|
|
{
|
|
|
Items = table,
|
|
|
Total = totalNumber
|
|
|
}
|
|
|
};
|
|
|
}
|
|
|
public List<long> getAllChildOrgId(long parentId)
|
|
|
{
|
|
|
var query = base.Repository.AsSugarClient().Queryable<SysOrg>()
|
|
|
.Where(c => c.ParentId == parentId)
|
|
|
.Select(c => new { c.Id, c.ParentId })
|
|
|
.ToList();
|
|
|
|
|
|
var childIds = query.Select(c => c.Id).ToList();
|
|
|
var grandChildIds = query.SelectMany(c => getAllChildOrgId(c.Id)).ToList();
|
|
|
|
|
|
childIds.AddRange(grandChildIds);
|
|
|
return childIds;
|
|
|
}
|
|
|
|
|
|
|
|
|
public async Task<Response<PageInfo<List<UserView>>>> Load(QueryUserListReq request)
|
|
|
{
|
|
|
|
|
|
var user = _auth.GetCurrentUser().User;
|
|
|
|
|
|
string sqlstr = "select \"min\"(\"Level\") from sys_userorg where \"UserId\"='" + user.Id + "' ";
|
|
|
var level = client.Ado.GetInt(sqlstr);
|
|
|
if (level == 0 || user.Id == -1)
|
|
|
{
|
|
|
|
|
|
|
|
|
RefAsync<int> totalNumber = 0;
|
|
|
|
|
|
var table = await base.Repository.AsQueryable()
|
|
|
.WhereIF(!string.IsNullOrEmpty(request.key), u => u.Account.Contains(request.key) || u.Name.Contains(request.key))
|
|
|
.WhereIF(request.orgId != 0,
|
|
|
u => SqlFunc.Subqueryable<SysUserOrg>().Where(uo => uo.OrgId == request.orgId && uo.UserId == u.Id).Any())
|
|
|
.OrderByDescending(u => u.CreateTime)
|
|
|
.Select<UserView>()
|
|
|
.ToPageListAsync(request.page, request.limit, totalNumber);
|
|
|
|
|
|
return new Response<PageInfo<List<UserView>>>()
|
|
|
{
|
|
|
Result = new PageInfo<List<UserView>>
|
|
|
{
|
|
|
Items = table,
|
|
|
Total = totalNumber
|
|
|
}
|
|
|
};
|
|
|
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
string sqlstr1 = "select \"OrgId\" from sys_userorg where \"Level\"=" + level + " and \"UserId\"='" + user.Id + "' ";
|
|
|
List<long> orgIds1 = client.Ado.SqlQuery<long>(sqlstr1);
|
|
|
int count11 = orgIds1.Count;
|
|
|
for (int i = 0; i < count11; i++)
|
|
|
|
|
|
{
|
|
|
List<long> longs = getAllChildOrgId(orgIds1[i]);
|
|
|
orgIds1.AddRange(longs);
|
|
|
}
|
|
|
string keyword = "";
|
|
|
if (!string.IsNullOrEmpty(request.key))
|
|
|
{
|
|
|
keyword = keyword + "and a.\"Name\" like '%" + request.key + "%'";
|
|
|
}
|
|
|
string orgsql = "";
|
|
|
if (request.orgId != 0)
|
|
|
{
|
|
|
orgsql = " and \"OrgId\" ='" + request.orgId + "'";
|
|
|
}
|
|
|
string orgIds = "";
|
|
|
for (int j = 0; j < orgIds1.Count; j++)
|
|
|
{
|
|
|
if (j == orgIds1.Count - 1)
|
|
|
{
|
|
|
orgIds = orgIds + orgIds1[j];
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
orgIds = orgIds + orgIds1[j] + ",";
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
string sql = "WITH t as (\r\nselect \"UserId\" from ( select * from sys_userorg where \"UserId\" not in (select \"UserId\" from sys_userorg where \"Level\"<(select \"min\"(\"Level\") from sys_userorg " +
|
|
|
// " where \"UserId\"='"+ user.Id+ "' ))) a where a.\"OrgId\" in (select \"OrgId\" from sys_userorg where \"UserId\"='"+ user.Id+ "'"+ orgsql + " ) GROUP BY \"UserId\")";
|
|
|
" where \"UserId\"='" + user.Id + "' ))) a where a.\"OrgId\" =ANY(array[" + orgIds + "]) GROUP BY \"UserId\")";
|
|
|
string sql1 = "((SELECT a.* FROM t LEFT JOIN sys_user a on t.\"UserId\"=a.\"Id\" where 1=1 " + keyword + " ) UNION (SELECT * FROM sys_user a where a.\"CreateId\"='" + user.Id + "' " + keyword + ")) limit " + request.limit + "OFFSET " + (request.page - 1) * request.limit;
|
|
|
string sql2 = "(SELECT COUNT(a.*) FROM t LEFT JOIN sys_user a on t.\"UserId\"=a.\"Id\" where 1=1 " + keyword + " ) ";
|
|
|
string sql3 = "SELECT COUNT(a.*) FROM sys_user a where a.\"CreateId\"='" + user.Id + "' " + keyword;
|
|
|
|
|
|
|
|
|
var table = client.Ado.SqlQuery<UserView>(sql + sql1);
|
|
|
int count1 = client.Ado.GetInt(sql + sql2);
|
|
|
int count2 = client.Ado.GetInt(sql + sql3);
|
|
|
|
|
|
int count = count1 + count2;
|
|
|
/* var orgIds = base._auth.GetCurrentUser().Orgs.Select(o => o.Id);
|
|
|
|
|
|
RefAsync<int> totalNumber = 0;
|
|
|
|
|
|
var table = await base.Repository.AsQueryable()
|
|
|
.WhereIF(!string.IsNullOrEmpty(request.key), u => u.Account.Contains(request.key) || u.Name.Contains(request.key))
|
|
|
.WhereIF(request.orgId != 0,
|
|
|
u => SqlFunc.Subqueryable<SysUserOrg>().Where(uo => uo.OrgId == request.orgId && uo.UserId == u.Id).Any())
|
|
|
.Where(u => SqlFunc.Subqueryable<SysUserOrg>().Where(uo => orgIds.Contains(uo.OrgId) && uo.UserId == u.Id).Any())
|
|
|
.OrderByDescending(u => u.CreateTime)
|
|
|
.Select<UserView>()
|
|
|
.ToPageListAsync(request.page, request.limit, totalNumber);*/
|
|
|
|
|
|
return new Response<PageInfo<List<UserView>>>()
|
|
|
{
|
|
|
Result = new PageInfo<List<UserView>>
|
|
|
{
|
|
|
Items = table,
|
|
|
Total = count
|
|
|
}
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public async Task<Response<PageInfo<List<dynamic>>>> LoadUsers(QueryUserListReq request)
|
|
|
{
|
|
|
//获取当前用户
|
|
|
var user = _auth.GetCurrentUser().User;
|
|
|
RefAsync<int> totalNumber = 0;
|
|
|
//该用户下包含所有部门
|
|
|
List<long> deplist = new List<long>();
|
|
|
if (user != null)
|
|
|
{
|
|
|
var departs = client.Queryable<SysUserOrg>().Where(r => r.UserId == user.Id).ToList();
|
|
|
foreach (var item in departs)
|
|
|
{
|
|
|
var list = client.Queryable<SysOrg>().ToChildList(it => it.ParentId, item.OrgId)?.Select(it => it.Id).ToList();
|
|
|
deplist = deplist.Union(list).ToList();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//过滤orgid传参
|
|
|
List<long> dpt = new List<long>();
|
|
|
if (request.orgId != 0)
|
|
|
{
|
|
|
dpt = client.Queryable<SysOrg>().ToChildList(it => it.ParentId, request.orgId)?.Select(it => it.Id).ToList();
|
|
|
}
|
|
|
|
|
|
//获取列表数据
|
|
|
var table = await base.Repository.AsQueryable()
|
|
|
.WhereIF(!string.IsNullOrEmpty(request.key), u => u.Account.Contains(request.key) || u.Name.Contains(request.key))//过滤key
|
|
|
.LeftJoin<SysUserOrg>((u, o) => u.Id == o.UserId)
|
|
|
.Where((u, o) => deplist.Contains(o.OrgId) || u.CreateId == user.Id) //部门及创建人
|
|
|
.WhereIF(request.orgId != 0, (u, o) => dpt.Contains(o.OrgId)) //部门及左侧选择部门
|
|
|
.Distinct()
|
|
|
.OrderByDescending((u, o) => u.CreateTime)
|
|
|
.Select<dynamic>((u, o) => new
|
|
|
{
|
|
|
id = u.Id,
|
|
|
account = u.Account,
|
|
|
name = u.Name,
|
|
|
create = u.CreateTime,
|
|
|
department = SqlFunc.Subqueryable<SysUserOrg>().Where(a => a.UserId == u.Id).LeftJoin<SysOrg>((a, o) => a.OrgId == o.Id).SelectStringJoin((a, o) => o.Name, ","),
|
|
|
role = SqlFunc.Subqueryable<SysUserRole>().Where(a => a.UserId == u.Id).LeftJoin<SysRole>((a, o) => a.RoleId == o.Id).SelectStringJoin((a, o) => o.Name, ","),
|
|
|
})
|
|
|
.ToPageListAsync(request.page, request.limit, totalNumber);
|
|
|
|
|
|
return new Response<PageInfo<List<dynamic>>>()
|
|
|
{
|
|
|
Result = new PageInfo<List<dynamic>>
|
|
|
{
|
|
|
Items = table,
|
|
|
Total = totalNumber
|
|
|
}
|
|
|
};
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取指定角色包含的用户列表
|
|
|
/// </summary>
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
public async Task<Response<PageInfo<List<UserView>>>> LoadByRole(QueryUserListByRoleReq request)
|
|
|
{
|
|
|
RefAsync<int> totalCount = 0;
|
|
|
|
|
|
var users = await client.Queryable<SysUserRole>()
|
|
|
.LeftJoin<SysUser>((ur, u) => ur.UserId == u.Id)
|
|
|
.Where(ur => ur.RoleId == request.roleId)
|
|
|
.Select((ur, u) => new UserView
|
|
|
{
|
|
|
Id = u.Id,
|
|
|
Account = u.Account,
|
|
|
Name = u.Name
|
|
|
}).ToPageListAsync(request.page, request.limit, totalCount);
|
|
|
|
|
|
return new Response<PageInfo<List<UserView>>>
|
|
|
{
|
|
|
Code = 200,
|
|
|
Message = "success",
|
|
|
Result = new PageInfo<List<UserView>>
|
|
|
{
|
|
|
Items = users,
|
|
|
Total = totalCount
|
|
|
}
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取指定机构包含的用户列表
|
|
|
/// </summary>
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
public async Task<TableData> LoadByOrg(QueryUserListByOrgReq request)
|
|
|
{
|
|
|
var db = base.Repository.AsSugarClient();
|
|
|
RefAsync<int> totalCount = 0;
|
|
|
|
|
|
var users = await db.CopyNew().Queryable<SysUserOrg>()
|
|
|
.LeftJoin<SysUser>((uo, u) => uo.UserId == u.Id)
|
|
|
.Where((uo, u) => uo.OrgId == request.orgId)
|
|
|
.ToPageListAsync(request.page, request.limit, totalCount);
|
|
|
|
|
|
return new TableData
|
|
|
{
|
|
|
count = (int)totalCount,
|
|
|
data = users
|
|
|
};
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 根据 account 判断帐号是否存在
|
|
|
/// </summary>
|
|
|
/// <param name="account"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool IsExistUser(string account)
|
|
|
{
|
|
|
return base.Repository.IsAny(a => a.Account == account);
|
|
|
}
|
|
|
|
|
|
public SysUser Get(long id)
|
|
|
{
|
|
|
return Repository.GetById(id);
|
|
|
}
|
|
|
|
|
|
public SysUser GetByAccount(string account)
|
|
|
{
|
|
|
return Repository.GetFirst(u => u.Account == account);
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 用户增删改
|
|
|
|
|
|
#region 添加/修改
|
|
|
public Response<bool> AddOrUpdate(UpdateUserReq request)
|
|
|
{
|
|
|
request.ValidationEntity(u => new { u.Account, u.Name });
|
|
|
|
|
|
SysUser requser = request;
|
|
|
requser.CreateId = _auth.GetCurrentUser().User.Id;
|
|
|
|
|
|
using (var uow = base.UnitWork.CreateContext())
|
|
|
{
|
|
|
if (request.Id == 0)
|
|
|
{
|
|
|
if (uow.User.IsAny(u => u.Account == request.Account))
|
|
|
{
|
|
|
throw new Exception("用户账号已存在");
|
|
|
}
|
|
|
|
|
|
requser.Secretkey = Md5Helper.Encrypt(CommonHelper.CreateNo(), 16).ToLower();
|
|
|
if (string.IsNullOrEmpty(requser.Password))
|
|
|
{
|
|
|
requser.Password = Md5Helper.Encrypt(DESEncrypt.Encrypt(Md5Helper.Hash(requser.Account), requser.Secretkey).ToLower(), 32).ToLower(); //如果客户端没提供密码,默认密码同账号
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
requser.Password = Md5Helper.Encrypt(DESEncrypt.Encrypt(requser.Password, requser.Secretkey).ToLower(), 32).ToLower();
|
|
|
}
|
|
|
requser.CreateTime = DateTime.Now;
|
|
|
requser.Id = Yitter.IdGenerator.YitIdHelper.NextId();
|
|
|
uow.User.Insert(requser);
|
|
|
request.Id = requser.Id; //要把保存后的ID存入view
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
uow.User.Update(u => new SysUser
|
|
|
{
|
|
|
Account = requser.Account,
|
|
|
BizCode = requser.BizCode,
|
|
|
Name = requser.Name,
|
|
|
Sex = requser.Sex,
|
|
|
Status = requser.Status
|
|
|
}, u => u.Id == request.Id);
|
|
|
if (!string.IsNullOrEmpty(requser.Password)) //密码为空的时候,不做修改
|
|
|
{
|
|
|
var userInfo = uow.User.GetById(requser.Id);
|
|
|
|
|
|
requser.Password = Md5Helper.Encrypt(DESEncrypt.Encrypt(requser.Password, userInfo.Secretkey).ToLower(), 32).ToLower();
|
|
|
uow.User.Update(u => new SysUser
|
|
|
{
|
|
|
Password = requser.Password
|
|
|
}, u => u.Id == request.Id);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var flag = uow.Commit();
|
|
|
|
|
|
return new Response<bool>
|
|
|
{
|
|
|
Result = flag,
|
|
|
Message = flag == true ? "success" : "error"
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 删除
|
|
|
/// <summary>
|
|
|
/// 删除用户,包含用户与组织关系、用户与角色关系
|
|
|
/// </summary>
|
|
|
/// <param name="ids"></param>
|
|
|
public Response<bool> Delete(long[] ids)
|
|
|
{
|
|
|
using (var uow = base.UnitWork.CreateContext())
|
|
|
{
|
|
|
uow.SysUserOrg.Delete(a => ids.Contains(a.UserId));
|
|
|
uow.SysUserRole.Delete(a => ids.Contains(a.UserId));
|
|
|
uow.User.Delete(u => ids.Contains(u.Id));
|
|
|
var flag = uow.Commit();
|
|
|
return new Response<bool>
|
|
|
{
|
|
|
Result = flag,
|
|
|
Message = flag == true ? "success" : "error"
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 分配角色
|
|
|
public async Task<Response<bool>> UserRoles(AssignUserRoles userRoles)
|
|
|
{
|
|
|
using (var uow = base.UnitWork.CreateContext())
|
|
|
{
|
|
|
//删除用户相关角色
|
|
|
await uow.SysUserRole.DeleteByIdAsync(userRoles.UserId);
|
|
|
//重新添加本次角色
|
|
|
var models = userRoles.RoleIds.Select(r => new SysUserRole { UserId = userRoles.UserId, RoleId = r }).ToList();
|
|
|
await uow.SysUserRole.InsertRangeAsync(models);
|
|
|
|
|
|
var flag = uow.Commit();
|
|
|
|
|
|
return new Response<bool>
|
|
|
{
|
|
|
Result = flag,
|
|
|
Message = flag == true ? "success" : "error"
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 分配部门
|
|
|
public async Task<Response<bool>> UserOrgs(AssignUserOrgs userOrgs)
|
|
|
{
|
|
|
using (var uow = base.UnitWork.CreateContext())
|
|
|
{
|
|
|
//删除用户相关部门
|
|
|
await uow.SysUserOrg.DeleteByIdAsync(userOrgs.UserId);
|
|
|
//重新添加本次部门
|
|
|
var models = userOrgs.OrgPoses.Select(o => new SysUserOrg { UserId = userOrgs.UserId, OrgId = o.OrgId, PositionId = o.PosId, Level = o.Level }).ToList();
|
|
|
await uow.SysUserOrg.InsertRangeAsync(models);
|
|
|
|
|
|
var flag = uow.Commit();
|
|
|
|
|
|
return new Response<bool>
|
|
|
{
|
|
|
Result = flag,
|
|
|
Message = flag == true ? "success" : "error"
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
#region 修改密码
|
|
|
/// <summary>
|
|
|
/// 修改密码
|
|
|
/// </summary>
|
|
|
/// <param name="request"></param>
|
|
|
public void ChangePassword(ChangePasswordReq request)
|
|
|
{
|
|
|
var user = base.Repository.GetFirst(a => a.Account == request.Account);
|
|
|
|
|
|
if (user != null)
|
|
|
{
|
|
|
var pwd = Md5Helper.Encrypt(DESEncrypt.Encrypt(request.Password, user.Secretkey).ToLower(), 32).ToLower();
|
|
|
|
|
|
Repository.Update(user => new SysUser
|
|
|
{
|
|
|
Password = pwd
|
|
|
}, u => u.Account == request.Account);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 修改用户资料
|
|
|
/// <summary>
|
|
|
/// 修改用户资料
|
|
|
/// </summary>
|
|
|
/// <param name="request"></param>
|
|
|
public void ChangeProfile(ChangeProfileReq request)
|
|
|
{
|
|
|
if (request.Account == Define.SYSTEM_USERNAME)
|
|
|
{
|
|
|
throw new Exception("不能修改超级管理员信息");
|
|
|
}
|
|
|
|
|
|
Repository.Update(user => new SysUser
|
|
|
{
|
|
|
Name = request.Name,
|
|
|
Sex = request.Sex
|
|
|
}, u => u.Account == request.Account);
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 更新数据库实体类
|
|
|
/// <summary>
|
|
|
/// 更新数据库实体类
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public string AddEntity()
|
|
|
{
|
|
|
using (var uow = base.UnitWork.CreateContext())
|
|
|
{
|
|
|
foreach (var item in uow.Db.DbMaintenance.GetTableInfoList().Where(r => r.Name.ToLower().StartsWith("lasa_annotation")))
|
|
|
{
|
|
|
//string entityName = item.Name.Substring(0, 1).ToUpper() + item.Name.Substring(1, 4).ToLower() + item.Name.Substring(6, 1).ToUpper() + item.Name.Substring(7).ToLower();/*实体名大写*/
|
|
|
string entityName = "LasaAnnotation";
|
|
|
uow.Db.MappingTables.Add(entityName, item.Name);
|
|
|
//foreach (var col in db.DbMaintenance.GetColumnInfosByTableName(item.Name))
|
|
|
//{
|
|
|
// db.MappingColumns.Add(col.DbColumnName.ToUpper() /*类的属性大写*/, col.DbColumnName, entityName);
|
|
|
//}
|
|
|
}
|
|
|
uow.Db.DbFirst.Where(r => r.ToLower().StartsWith("lasa_annotation")).IsCreateAttribute().CreateClassFile("E:\\低空态势感知\\code\\OpenAuth.Repository\\Domain", "OpenAuth.Repository.Domain");
|
|
|
uow.Commit();
|
|
|
}
|
|
|
return "更新实体成功";
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 上传用户信息
|
|
|
/// </summary>
|
|
|
/// <param name="formFiles"></param>
|
|
|
/// <returns></returns>
|
|
|
public Response<bool> ImportUserInfo(IFormFileCollection formFiles)
|
|
|
{
|
|
|
IFormFile file = formFiles[0];
|
|
|
//存储文件到服务器
|
|
|
if (file != null)
|
|
|
{
|
|
|
if (file.FileName.IndexOf(".xls") > 0 || file.FileName.IndexOf(".xlsx") > 0)
|
|
|
{
|
|
|
//数据库导入
|
|
|
IWorkbook workbook = null;
|
|
|
if (file.FileName.IndexOf(".xlsx") > 0)
|
|
|
{
|
|
|
using (var stream = file.OpenReadStream())
|
|
|
{
|
|
|
workbook = new XSSFWorkbook(stream);//excel的版本2007
|
|
|
}
|
|
|
}
|
|
|
else if (file.FileName.IndexOf(".xls") > 0)
|
|
|
{
|
|
|
using (var stream = file.OpenReadStream())
|
|
|
{
|
|
|
workbook = new HSSFWorkbook(stream);//excel的版本2003
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//数据处理
|
|
|
using (var uow = base.UnitWork.CreateContext())
|
|
|
{
|
|
|
//获取sheet
|
|
|
ISheet sheet;
|
|
|
sheet = workbook.GetSheetAt(0);
|
|
|
//处理sheet数据
|
|
|
string res = "";
|
|
|
if (sheet != null)
|
|
|
{
|
|
|
IRow firstRow = sheet.GetRow(0);
|
|
|
//获取有效数据行数
|
|
|
int lastRow = sheet.LastRowNum;
|
|
|
int rowCount = 0;
|
|
|
//具体excel数据解析
|
|
|
for (int i = 1; i <= lastRow; ++i)
|
|
|
{
|
|
|
IRow row = sheet.GetRow(i);
|
|
|
if (row == null || string.IsNullOrEmpty(row.GetCell(0).ToString())) continue;
|
|
|
|
|
|
SysUser user = new SysUser();
|
|
|
user.Id = YitIdHelper.NextId();
|
|
|
user.CreateTime = DateTime.Now;
|
|
|
user.Name = row.GetCell(4).ToString();
|
|
|
user.CreateId = _auth.GetCurrentUser().User.Id;
|
|
|
user.Account=row.GetCell(5).ToString();
|
|
|
user.Password = Md5Helper.Encrypt(user.Account, 32).ToLower();
|
|
|
|
|
|
if (uow.User.IsAny(u => u.Account == user.Account))
|
|
|
{
|
|
|
res += "账号" + user.Account + "已存在,";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
user.Secretkey = Md5Helper.Encrypt(CommonHelper.CreateNo(), 16).ToLower();
|
|
|
if (string.IsNullOrEmpty(user.Password))
|
|
|
{
|
|
|
user.Password = Md5Helper.Encrypt(DESEncrypt.Encrypt(Md5Helper.Hash(user.Account), user.Secretkey).ToLower(), 32).ToLower(); //如果客户端没提供密码,默认密码同账号
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
|
|
|
user.Password = Md5Helper.Encrypt(DESEncrypt.Encrypt(user.Password, user.Secretkey).ToLower(), 32).ToLower();
|
|
|
}
|
|
|
uow.User.Insert(user);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(row.GetCell(7).ToString()))
|
|
|
{
|
|
|
//为用户分配角色
|
|
|
SysUserRole userrole = new SysUserRole();
|
|
|
userrole.UserId = user.Id;
|
|
|
userrole.RoleId = Convert.ToInt64(row.GetCell(7).ToString());
|
|
|
//删除用户相关角色
|
|
|
uow.SysUserRole.DeleteById(user.Id);
|
|
|
//添加
|
|
|
uow.SysUserRole.Insert(userrole);
|
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrEmpty(row.GetCell(2).ToString()))
|
|
|
{
|
|
|
//为用户分配部门
|
|
|
SysUserOrg userorg = new SysUserOrg();
|
|
|
userorg.UserId = user.Id;
|
|
|
userorg.OrgId = Convert.ToInt64(row.GetCell(2).ToString());
|
|
|
userorg.PositionId = 0;
|
|
|
userorg.Level = Convert.ToInt16(row.GetCell(3).ToString());
|
|
|
//删除用户相关部门
|
|
|
uow.SysUserOrg.DeleteById(user.Id);
|
|
|
//重新添加本次部门
|
|
|
uow.SysUserOrg.Insert(userorg);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
var flag = uow.Commit();
|
|
|
|
|
|
return new Response<bool>
|
|
|
{
|
|
|
Result = flag,
|
|
|
Message = flag == true ? "更新成功 "+res : "更新失败"
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return new Response<bool>
|
|
|
{
|
|
|
Result = false,
|
|
|
Message = "上传文件类型错误,请上传Excel文件"
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return new Response<bool>
|
|
|
{
|
|
|
Result = false,
|
|
|
Message = "文件为空"
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
} |