using cylsg.Model.ECTEModel;
|
using cylsg.Model.UserModel;
|
using cylsg.Model.utilityViewModel;
|
using cylsg.utility.Extend;
|
using EzCoreNet.Redis;
|
using Furion;
|
using Furion.DependencyInjection;
|
using Furion.FriendlyException;
|
using Models;
|
using SqlSugar;
|
using System.Security.Claims;
|
|
namespace ECTESTOA
|
{
|
/// <summary>
|
/// 川印相关的OA 服务
|
/// </summary>
|
public class OAServices : IOAServices, IScoped
|
{
|
private static string ECTESTOAPermissionsKey= "ECTESTOAPermissionsKey:";
|
|
|
/// <summary>
|
/// redis服务
|
/// </summary>
|
private readonly IEzCoreNetRedisService _redisService;
|
private ISqlSugarClient _OAsqlSugarClient;
|
private ISqlSugarClient _sqlSugarClient;
|
|
public Guid firmId => new Guid( "88B49967-D590-452C-93C6-0049A75FA5FF");
|
|
|
public OAServices ( IEzCoreNetRedisService ezCoreNetRedisService,ISqlSugarClient sqlSugarClient)
|
{
|
_redisService = ezCoreNetRedisService;
|
_sqlSugarClient = sqlSugarClient;
|
_OAsqlSugarClient = sqlSugarClient .AsTenant().GetConnection("ECTESTOADB");
|
|
}
|
|
public async Task< ECTESTOAPermissions> GetOAPermissions()
|
{
|
|
|
var UserID = App.User?.FindFirstValue("UserID");
|
if(string.IsNullOrEmpty(UserID))
|
{
|
throw Oops.Oh("没有登录信息,不可使用");
|
}
|
var ret= _redisService.Get<ECTESTOAPermissions>(ECTESTOAPermissionsKey + UserID);
|
if(ret != null)
|
{
|
return ret;
|
}
|
|
else
|
{
|
string CaiwuKey = App.Configuration["EcTestOAMenuName:CaiWu"] ?? "没有";
|
|
|
var CaiWUMenuiId= await _OAsqlSugarClient.Queryable<Sys_Permissions_Menu>().Where(x => x.IsUsed == true && x.MenuName == CaiwuKey).Select(x=>x.Keyid).WithCache(600).FirstAsync();
|
int id = UserID?.toInt() ?? 0;
|
if (id == 0)
|
throw Oops.Oh("登录信息错误");
|
var user = await _sqlSugarClient.Queryable<User>().Where(x => x.Id == id && x.IsEn == true && x.IsDeleted == false).WithCache(180).FirstAsync();
|
if (user==null)
|
{
|
throw Oops.Oh("登录信息错误,不是有效用户");
|
}
|
//重新获取权限
|
ret = await _OAsqlSugarClient.Queryable<OaStaff>().Includes(x => x.Department).Where(x => x.MobieNum == user.ItCode && x.FirmId == firmId).Select(x => new ECTESTOAPermissions
|
{
|
DepartmentName = x.Department.Name,
|
DepartId=x.DepartmentId
|
|
|
|
},true
|
).FirstAsync();
|
if (ret == null)
|
{
|
//不是用户,3分钟后重新查询
|
ret = new ECTESTOAPermissions();
|
|
}
|
else
|
{
|
if (CaiWUMenuiId > 0&&ret.KeyId>0)
|
{
|
var Caiwu= await _OAsqlSugarClient.Queryable<OA_StaffRoleRel, OA_FirmRole, OA_FirmRolePermissionsRel>((sr,fr,spr)=>new JoinQueryInfos(
|
JoinType.Left,sr.RoleId==fr.Keyid&&fr.FirmId== firmId&& sr.FirmId==firmId&&fr.IsUsed==true,
|
JoinType.Left,fr.Keyid==spr.RoleId
|
|
) ).Where((sr, fr, spr)=>spr.MenuIdThree== CaiWUMenuiId&&sr.StaffId==ret.KeyId).Select((sr, fr, spr) => spr.MenuIdThree).FirstAsync();
|
if(Caiwu>0)
|
{
|
ret.BF_IsCaiWu = true;
|
}
|
}
|
}
|
|
_redisService.Add(ECTESTOAPermissionsKey + UserID, ret, 180);
|
|
|
}
|
return ret;
|
|
}
|
|
public Task<OaWorkPlan> GetWorkPlans()
|
{
|
throw new NotImplementedException();
|
}
|
}
|
}
|