移动系统liao
2025-01-22 20c735f3df81e9e0a8946c71344fe62ddcee9d87
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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();
        }
    }
}