init commit

This commit is contained in:
路 范
2022-03-30 17:54:33 +08:00
parent df01841625
commit 904bdd16cd
500 changed files with 217251 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
using Ewide.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RoadFlow.Data
{
public interface IUserDummy
{
/// <summary>
/// 根据一组ID字符串得到人员的姓名
/// </summary>
/// <param name="id">逗号分开的ID</param>
/// <returns></returns>
public string GetNames(string ids);
/// <summary>
/// 判断一个人员ID是否在一个组织机构字符串中
/// </summary>
/// <param name="organizeIds"></param>
/// <param name="userId"></param>
/// <returns></returns>
public bool Contains(string organizeIds, string userId);
/// <summary>
/// 判断一个人员是否在一个组织架构字符串里
/// </summary>
/// <param name="userId"></param>
/// <param name="memberIds"></param>
/// <returns></returns>
public bool IsIn(string userId, string memberIds);
/// <summary>
/// 得到人员的签章图片路径(VUE版本)
/// </summary>
/// <returns></returns>
public string GetSignSrcVue(string userId = "", string userName = "");
/// <summary>
/// 得到用户加密后的密码
/// </summary>
/// <param name="userId">用户ID</param>
/// <param name="password">密码</param>
/// <returns></returns>
public string GetMD5Password(string userId, string password);
public SysUser Get(string id);
}
}

View File

@@ -0,0 +1,550 @@
using Ewide.Core;
using Furion;
using Furion.DatabaseAccessor;
using Furion.DependencyInjection;
using Newtonsoft.Json.Linq;
using RoadFlow.Data;
using RoadFlow.Model.FlowRunModel;
using RoadFlow.Utility;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RoadFlow.Data
{
public class UserDummy: IUserDummy, ITransient
{
private readonly IRepository<SysUser> _sysUserRep =App.GetService<IRepository<SysUser>>(); // 用户表仓储
private readonly IRepository<SysOrg> _sysOrgRep =App.GetService< IRepository<SysOrg>>();
private readonly IRepository<SysEmp> _sysEmpRep=App.GetService<IRepository<SysEmp>>();
private readonly IRepository<SysEmpExtOrgPos> _sysEmpExtOrgPosRep= App.GetService<IRepository<SysEmpExtOrgPos>>();
private readonly IRepository<SysRole> _sysRoleRep= App.GetService<IRepository<SysRole>>();
private readonly IOrganize _organize = new Organize();
private readonly IUserManager _userManager = App.GetService<IUserManager>();
private readonly IRepository<SysRoleDataScope> _sysRoleDataScopeRep= App.GetService<IRepository<SysRoleDataScope>>();
/// <summary>
/// 根据一组ID字符串得到人员的姓名
/// </summary>
/// <param name="id">逗号分开的ID</param>
/// <returns></returns>
public string GetNames(string ids)
{
if (ids.IsNullOrEmpty())
{
return string.Empty;
}
StringBuilder stringBuilder = new StringBuilder();
List<string> userids = new List<string>();
foreach (string id in ids.Split(','))
{
string userId = id;
if (id.StartsWith(IOrganize.PREFIX_USER))
{
userId = id.RemoveUserPrefix();
}
if (!userId.IsGuid())
{
continue;
}
userids.Add(userId);
}
List<SysUser> users = _sysUserRep.DetachedEntities.Where(x => userids.Contains(x.Id)).ToList();
foreach (SysUser u in users)
{
stringBuilder.Append(u.Name);
stringBuilder.Append("、");
}
return stringBuilder.ToString().TrimEnd('、');
}
/// <summary>
/// 判断一个人员ID是否在一个组织机构字符串中
/// </summary>
/// <param name="organizeIds"></param>
/// <param name="userId"></param>
/// <returns></returns>
public bool Contains(string organizeIds, string userId)
{
string[] orgids = organizeIds.Split(',');
for (int a = 0; a < orgids.Length; a++)
{
string curent = orgids[a];
if (curent.StartsWith(IOrganize.PREFIX_USER) && curent.RemoveUserPrefix() == userId)
return true;
if (curent.StartsWith(IOrganize.PREFIX_RELATION) && curent.RemoveUserRelationPrefix() == userId)
return true;
if (curent.StartsWith(IOrganize.PREFIX_WORKGROUP))
orgids[a] = curent.RemoveWorkGroupPrefix();
}
bool emp =_sysEmpRep.Count(x => x.Id == userId && orgids.Contains(x.OrgId))>0;
bool extEmp=_sysEmpExtOrgPosRep.Count(x => x.SysEmpId == userId && orgids.Contains(x.SysOrgId)) > 0;
return emp | extEmp;
}
/// <summary>
/// 判断一个人员是否在一个组织架构字符串里
/// </summary>
/// <param name="userId"></param>
/// <param name="memberIds"></param>
/// <returns></returns>
public bool IsIn(string userId, string memberIds)
{
if (!userId.IsGuid())
{
return false;
}
else if (userId.StartsWith(IOrganize.PREFIX_USER))
{
userId = userId.RemoveUserPrefix();
}
else if (userId.StartsWith(IOrganize.PREFIX_RELATION))
{
userId = userId.RemoveUserRelationPrefix ();
}
var users = _organize.GetAllUsers(memberIds);
return users.Exists(p => p.Id == userId);
}
/// <summary>
/// 得到人员的签章图片路径(VUE版本)
/// </summary>
/// <returns></returns>
public string GetSignSrcVue(string userId = "", string userName = "")
{
string rootPath = Tools.GetContentRootPath() + "/wwwroot";
string signPath = "/roadflow-files/user-signs/" + (userId.IsNullOrWhiteSpace() ? _userManager.UserId.ToLower() : userId.ToLower()) + "/default.png";
if (File.Exists(rootPath + signPath))
{
return signPath;
}
else
{
string dirName = Path.GetDirectoryName(rootPath + signPath);
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
var img = CreateSignImage(userName.IsNullOrWhiteSpace() ? _userManager.Name : userName);
img.Save(rootPath + signPath, System.Drawing.Imaging.ImageFormat.Png);
return signPath;
}
}
/// <summary>
/// 重置签章图片
/// </summary>
/// <param name="userId"></param>
/// <param name="userName"></param>
/// <returns></returns>
public string ResetSignSrcVue(string userId = "", string userName = "")
{
string rootPath = Tools.GetContentRootPath() + "/wwwroot";
string signPath = "/roadflow-files/user-signs/" + (userId.IsNullOrWhiteSpace() ? _userManager.UserId.ToLower(): userId.ToLower()) + "/default.png";
string dirName = Path.GetDirectoryName(rootPath + signPath);
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
var img = CreateSignImage(userName.IsNullOrWhiteSpace() ? _userManager.Name : userName);
img.Save(rootPath + signPath, System.Drawing.Imaging.ImageFormat.Png);
return signPath;
}
/// <summary>
/// 生成签章图片
/// </summary>
/// <param name="UserName"></param>
/// <returns></returns>
public Bitmap CreateSignImage(string UserName)
{
if (UserName.IsNullOrEmpty())
{
return null;
}
Random rand = new Random(UserName.GetHashCode());
Size ImageSize = Size.Empty;
Font myFont;
try
{
myFont = new Font("LiSu", 16);
}
catch
{
myFont = new Font(new FontFamily(System.Drawing.Text.GenericFontFamilies.Monospace), 16);
}
// 计算图片大小
using (Bitmap bmp1 = new Bitmap(5, 5))
{
using (Graphics g = Graphics.FromImage(bmp1))
{
SizeF size = g.MeasureString(UserName, myFont, 10000);
ImageSize.Width = (int)size.Width + 4;
ImageSize.Height = (int)size.Height;
}
}
// 创建图片
Bitmap bmp = new Bitmap(ImageSize.Width, ImageSize.Height);
// 绘制文本
using (Graphics g = Graphics.FromImage(bmp))
{
g.Clear(Color.White);
using (StringFormat f = new StringFormat())
{
f.Alignment = StringAlignment.Center;
f.LineAlignment = StringAlignment.Center;
f.FormatFlags = StringFormatFlags.NoWrap;
g.DrawString(
UserName,
myFont,
Brushes.Red,
new RectangleF(
0,
2,
ImageSize.Width,
ImageSize.Height),
f);
}
}
// 随机制造噪点 (用户名绑定)
Color c = Color.Red;
int x, y;
int num = ImageSize.Width * ImageSize.Height * 8 / 100;
for (int iCount = 0; iCount < num; iCount++)
{
x = rand.Next(0, 4);
y = rand.Next(ImageSize.Height);
bmp.SetPixel(x, y, c);
x = rand.Next(ImageSize.Width - 4, ImageSize.Width);
y = rand.Next(ImageSize.Height);
bmp.SetPixel(x, y, c);
}
int num1 = ImageSize.Width * ImageSize.Height * 20 / 100;
for (int iCount = 0; iCount < num1; iCount++)
{
x = rand.Next(ImageSize.Width);
y = rand.Next(0, 4);
bmp.SetPixel(x, y, c);
x = rand.Next(ImageSize.Width);
y = rand.Next(ImageSize.Height - 4, ImageSize.Height);
bmp.SetPixel(x, y, c);
}
int num2 = ImageSize.Width * ImageSize.Height / 150;
for (int iCount = 0; iCount < num2; iCount++)
{
x = rand.Next(ImageSize.Width);
y = rand.Next(ImageSize.Height);
bmp.SetPixel(x, y, c);
}
myFont.Dispose();
return bmp;
}
/// <summary>
/// 获取用户部门
/// </summary>
/// <param name="uid"></param>
/// <returns></returns>
public SysOrg GetDept(string uid)
{
string oid = _sysEmpRep.DetachedEntities.FirstOrDefault(x => x.Id == uid).OrgId;
return _sysOrgRep.DetachedEntities.FirstOrDefault(x => x.Id == oid);
}
public SysPos GetStation(string uid)
{
return _sysEmpRep.DetachedEntities.FirstOrDefault(x => x.Id == uid).SysEmpPos[0].SysPos;
}
public string GetWorkGroupsId(string userId)
{
return string.Empty;
}
public string GetWorkGroupsName(string userId)
{
return string.Empty;
}
public static string LEADER_CODE="";
public string GetLeader(string userId)
{
string orgid =_sysEmpRep.DetachedEntities.FirstOrDefault(x => x.Id == userId).OrgId;
var emps =_sysEmpRep.DetachedEntities.Where(x => x.OrgId == orgid).ToList();
HashSet<string> userIds = new HashSet<string>();
foreach (var e in emps)
userIds.Add(e.Id);
var leaders =_sysRoleRep.DetachedEntities.Where(x => x.Code == LEADER_CODE).ToList();
foreach (var l in leaders)
{
foreach (var u in l.SysUsers)
{
if (userIds.Contains(u.Id))
return u.Id;
}
}
return string.Empty;
}
public SysOrg GetUnit(string userId)
{
string orgid =_sysEmpRep.DetachedEntities.FirstOrDefault(x => x.Id == userId).OrgId;
return _sysOrgRep.DetachedEntities.FirstOrDefault(x => x.Id == orgid);
}
public string GetName(string userId)
{
return _sysUserRep.DetachedEntities.FirstOrDefault(x => x.Id == userId)?.Name;
}
/// <summary>
/// 得到一个人员所在部门的工作角色
/// </summary>
/// <param name="id">人员id</param>
/// <returns></returns>
public JArray GetWorkRole(string userId)
{
SysUser usr =_sysUserRep.DetachedEntities.FirstOrDefault(x => x.Id == userId);
return JArray.FromObject(usr.SysRoles);
}
/// <summary>
/// 得到一批人员的部门领导和分管领导
/// </summary>
/// <param name="userIds"></param>
/// <returns></returns>
public (string leader, string chargeLeader) GetLeader(List<string> userIds)
{
StringBuilder leaderBuilder = new StringBuilder();
StringBuilder chargeLeaderBuilder = new StringBuilder();
foreach (string userId in userIds)
{
string leader = GetLeader(userId);
string chargeLeader = leader;
leaderBuilder.Append(leader);
leaderBuilder.Append(",");
chargeLeaderBuilder.Append(chargeLeader);
chargeLeaderBuilder.Append(",");
}
return (leaderBuilder.ToString().TrimEnd(','), chargeLeaderBuilder.ToString().TrimEnd(','));
}
/// <summary>
/// 得到一个人员的上级部门领导
/// </summary>
/// <param name="userId">guid(人ID),u_guid人ID,r_guid关系表ID</param>
/// <returns></returns>
public (string leader, string chargeLeader) GetParentLeader(string userId)
{
var emp = _sysEmpRep.DetachedEntities.FirstOrDefault(x => x.Id == userId);
var org = _sysOrgRep.DetachedEntities.FirstOrDefault(x => x.Id == emp.OrgId);
var parent = _sysOrgRep.DetachedEntities.FirstOrDefault(x => x.Id == org.Pid);
var emps = _sysEmpRep.DetachedEntities.Where(x => x.OrgId == parent.Id).ToList();
HashSet<string> userIds = new HashSet<string>();
foreach (var e in emps)
userIds.Add(e.Id);
var leaders = _sysRoleRep.DetachedEntities.Where(x => x.Code == LEADER_CODE).ToList();
foreach (var l in leaders)
{
foreach (var u in l.SysUsers)
{
if (userIds.Contains(u.Id))
return (u.Id,u.Id);
}
}
return (string.Empty, string.Empty);
}
/// <summary>
/// 得到一批人员的上级部门领导
/// </summary>
/// <param name="userId">guid(人ID),u_guid人ID,r_guid关系表ID</param>
/// <returns></returns>
public (string leader, string chargeLeader) GetParentLeader(List<string> userIds)
{
StringBuilder leaderBuilder = new StringBuilder();
StringBuilder chargeLeaderBuilder = new StringBuilder();
foreach (string userId in userIds)
{
(string leader, string chargeLeader) = GetParentLeader(userId);
leaderBuilder.Append(leader);
leaderBuilder.Append(",");
chargeLeaderBuilder.Append(chargeLeader);
chargeLeaderBuilder.Append(",");
}
return (leaderBuilder.ToString().TrimEnd(','), chargeLeaderBuilder.ToString().TrimEnd(','));
}
/// <summary>
/// 得到一个人员的所有上级部门领导
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public (string leader, string chargeLeader) GetAllParentLeader(string userId)
{
var emp = _sysEmpRep.DetachedEntities.FirstOrDefault(x => x.Id == userId);
var org = _sysOrgRep.DetachedEntities.FirstOrDefault(x => x.Id == emp.OrgId);
List<string> orgIds = new List<string>();
foreach (string str in org.Pids.Split("],",StringSplitOptions.RemoveEmptyEntries))
{
orgIds.Add(str.TrimStart('['));
}
List<SysEmp> emps =_sysEmpRep.DetachedEntities.Where(x => orgIds.Contains(x.OrgId)).ToList();
HashSet<string> uids = new HashSet<string>();
foreach (SysEmp em in emps)
uids.Add(em.Id);
var leaders = _sysRoleRep.DetachedEntities.Where(x => x.Code == LEADER_CODE).ToList();
StringBuilder leader = new StringBuilder();
foreach (var l in leaders)
{
foreach (var u in l.SysUsers)
{
if (uids.Contains(u.Id))
leader.Append(u.Id).Append(",");
}
}
string rtn = leader.ToString().TrimEnd(',');
return (rtn,rtn);
}
/// <summary>
/// 得到一批人员的所有上级部门领导
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public (string leader, string chargeLeader) GetAllParentLeader(List<string> userIds)
{
var empss = _sysEmpRep.DetachedEntities.Where(x => userIds.Contains(x.Id) ).ToList();
HashSet<string> orgset = new HashSet<string>();
foreach (var em in empss)
{
orgset.Add(em.OrgId);
}
var orgs =_sysOrgRep.DetachedEntities.Where(x => orgset.Contains(x.Id));
HashSet<string> orgIds = new HashSet<string>();
foreach (var org in orgs)
{
foreach (string str in org.Pids.Split("],", StringSplitOptions.RemoveEmptyEntries))
{
orgIds.Add(str.TrimStart('['));
}
}
List<SysEmp> emps = _sysEmpRep.DetachedEntities.Where(x => orgIds.Contains(x.OrgId)).ToList();
HashSet<string> uids = new HashSet<string>();
foreach (SysEmp em in emps)
uids.Add(em.Id);
var leaders = _sysRoleRep.DetachedEntities.Where(x => x.Code == LEADER_CODE).ToList();
StringBuilder leader = new StringBuilder();
foreach (var l in leaders)
{
foreach (var u in l.SysUsers)
{
if (uids.Contains(u.Id))
leader.Append(u.Id).Append(",");
}
}
string rtn = leader.ToString().TrimEnd(',');
return (rtn, rtn);
}
/// <summary>
/// 得到人员ID字符串
/// </summary>
/// <param name="users"></param>
/// <returns>u_人员ID1,u_人员ID2</returns>
public string GetUserIds(List<User> users)
{
StringBuilder stringBuilder = new StringBuilder();
foreach (var user in users)
{
stringBuilder.Append(IOrganize.PREFIX_USER);
stringBuilder.Append(user.Id);
stringBuilder.Append(",");
}
return stringBuilder.ToString().TrimEnd(',');
}
public string GetUserIds(List<SysUser> users)
{
StringBuilder stringBuilder = new StringBuilder();
foreach (var user in users)
{
stringBuilder.Append(IOrganize.PREFIX_USER);
stringBuilder.Append(user.Id);
stringBuilder.Append(",");
}
return stringBuilder.ToString().TrimEnd(',');
}
public string GetUserIds(List<SysEmp> users)
{
StringBuilder stringBuilder = new StringBuilder();
foreach (var user in users)
{
stringBuilder.Append(IOrganize.PREFIX_USER);
stringBuilder.Append(user.Id);
stringBuilder.Append(",");
}
return stringBuilder.ToString().TrimEnd(',');
}
/// <summary>
/// 得到一个人员所在部门所有人员
/// </summary>
/// <param name="userId">guid(人ID),u_guid人ID,r_guid关系表ID</param>
/// <returns></returns>
public List<SysEmp> GetOrganizeUsers(string userId)
{
string id = userId.StartsWith(IOrganize.PREFIX_RELATION) ? userId.RemoveUserRelationPrefix() : userId.StartsWith(IOrganize.PREFIX_USER) ? userId.RemoveUserPrefix() : userId;
string oid =_sysEmpRep.DetachedEntities.FirstOrDefault(x => x.Id == id).OrgId;
return _sysEmpRep.DetachedEntities.Where(x => x.OrgId == oid).ToList();
/*Guid organzieId = GetOrganizeId(userId);
return new Organize(systemCode).GetAllUsers(organzieId);*/
}
private HashSet<SysUser> tmpUserCache;
public SysUser GetFromTempCache(string userId)
{
if (tmpUserCache == null)
tmpUserCache = _sysUserRep.DetachedEntities.ToHashSet();
return tmpUserCache.FirstOrDefault(x => x.Id == userId);
}
public SysUser Get(string id)
{
return _sysUserRep.DetachedEntities.FirstOrDefault(x=>x.Id ==id);
}
/// <summary>
/// 得到用户加密后的密码
/// </summary>
/// <param name="userId">用户ID</param>
/// <param name="password">密码</param>
/// <returns></returns>
public string GetMD5Password(string userId, string password)
{
return (userId.ToString().ToUpper() + password).MD5();
}
}
}