Skip to content

Commit 52f13d5

Browse files
committed
😎钉钉插件代码调整及插件配置文件统一位置
1 parent b65a63d commit 52f13d5

File tree

8 files changed

+68
-111
lines changed

8 files changed

+68
-111
lines changed

Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Admin.NET.Plugin.DingTalk.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<TargetFramework>net6.0</TargetFramework>
@@ -20,7 +20,7 @@
2020
</ItemGroup>
2121

2222
<ItemGroup>
23-
<None Update="DingTalk.json">
23+
<None Update="Configuration\DingTalk.json">
2424
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
2525
</None>
2626
</ItemGroup>

Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Job/SyncDingTalkUserJob.cs

+62-98
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
namespace Admin.NET.Plugin.Job;
1515

16-
1716
/// <summary>
1817
/// 同步钉钉用户job
1918
/// </summary>
@@ -24,6 +23,7 @@ public class SyncDingTalkUserJob : IJob
2423
private readonly IServiceScopeFactory _scopeFactory;
2524
private readonly IDingTalkApi _dingTalkApi;
2625
private readonly ILogger _logger;
26+
2727
public SyncDingTalkUserJob(IServiceScopeFactory scopeFactory, IDingTalkApi dingTalkApi, ILoggerFactory loggerFactory)
2828
{
2929
_scopeFactory = scopeFactory;
@@ -37,17 +37,17 @@ public async Task ExecuteAsync(JobExecutingContext context, CancellationToken st
3737
var _sysUserRep = serviceScope.ServiceProvider.GetRequiredService<SqlSugarRepository<SysUser>>();
3838
var _dingTalkUserRepo = serviceScope.ServiceProvider.GetRequiredService<SqlSugarRepository<DingTalkUser>>();
3939
var _dingTalkOptions = serviceScope.ServiceProvider.GetRequiredService<IOptions<DingTalkOptions>>();
40-
// 获取token
40+
41+
// 获取Token
4142
var tokenRes = await _dingTalkApi.GetDingTalkToken(_dingTalkOptions.Value.ClientId, _dingTalkOptions.Value.ClientSecret);
4243
if (tokenRes.ErrCode != 0)
43-
{
4444
throw Oops.Oh(tokenRes.ErrMsg);
45-
}
45+
4646
var dingTalkUserList = new List<DingTalkEmpRosterFieldVo>();
4747
var offset = 0;
4848
while (offset >= 0)
4949
{
50-
// 获取用户id列表
50+
// 获取用户Id列表
5151
var userIdsRes = await _dingTalkApi.GetDingTalkCurrentEmployeesList(tokenRes.AccessToken, new GetDingTalkCurrentEmployeesListInput
5252
{
5353
StatusList = "2,3,5,-1",
@@ -59,7 +59,7 @@ public async Task ExecuteAsync(JobExecutingContext context, CancellationToken st
5959
_logger.LogError(userIdsRes.ErrMsg);
6060
break;
6161
}
62-
// 根据用户id获取花名册
62+
// 根据用户Id获取花名册
6363
var rosterRes = await _dingTalkApi.GetDingTalkCurrentEmployeesRosterList(tokenRes.AccessToken, new GetDingTalkCurrentEmployeesRosterListInput()
6464
{
6565
UserIdList = string.Join(",", userIdsRes.Result.DataList),
@@ -81,119 +81,83 @@ public async Task ExecuteAsync(JobExecutingContext context, CancellationToken st
8181
}
8282

8383
// 判断新增还是更新
84-
var sysDingTalkUserIdList = await _dingTalkUserRepo.AsQueryable()
85-
.Select(x => new
86-
{
87-
x.Id,
88-
x.DingTalkUserId
89-
})
90-
.ToListAsync();
91-
// 需要更新的用户id
92-
var uDingTalkUser = dingTalkUserList.Where(x => sysDingTalkUserIdList.Any(d => d.DingTalkUserId == x.UserId));
93-
// 需要新增的用户id
94-
var iDingTalkUser = dingTalkUserList.Where(u => !sysDingTalkUserIdList.Any(d => d.DingTalkUserId == u.UserId));
95-
#region 新增钉钉用户
96-
var iUser = iDingTalkUser
97-
.Select(res => new DingTalkUser
98-
{
99-
DingTalkUserId = res.UserId,
100-
Name = res.FieldDataList
101-
.Where(f => f.FieldCode == DingTalkConst.NameField)
102-
.Select(f => f.FieldValueList.Select(v => v.Value).FirstOrDefault())
103-
.FirstOrDefault(),
104-
Mobile = res.FieldDataList
105-
.Where(f => f.FieldCode == DingTalkConst.MobileField)
106-
.Select(f => f.FieldValueList.Select(v => v.Value).FirstOrDefault())
107-
.FirstOrDefault(),
108-
JobNumber = res.FieldDataList
109-
.Where(f => f.FieldCode == DingTalkConst.JobNumberField)
110-
.Select(f => f.FieldValueList.Select(v => v.Value).FirstOrDefault())
111-
.FirstOrDefault(),
112-
}).ToList();
84+
var sysDingTalkUserIdList = await _dingTalkUserRepo.AsQueryable().Select(u => new
85+
{
86+
u.Id,
87+
u.DingTalkUserId
88+
}).ToListAsync();
89+
90+
var uDingTalkUser = dingTalkUserList.Where(u => sysDingTalkUserIdList.Any(m => m.DingTalkUserId == u.UserId)); // 需要更新的用户Id
91+
var iDingTalkUser = dingTalkUserList.Where(u => !sysDingTalkUserIdList.Any(m => m.DingTalkUserId == u.UserId)); // 需要新增的用户Id
92+
93+
// 新增钉钉用户
94+
var iUser = iDingTalkUser.Select(res => new DingTalkUser
95+
{
96+
DingTalkUserId = res.UserId,
97+
Name = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.NameField).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
98+
Mobile = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.MobileField).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
99+
JobNumber = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.JobNumberField).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
100+
}).ToList();
113101
if (iUser.Count > 0)
114102
{
115-
var iUserRes = await _dingTalkUserRepo.CopyNew().AsInsertable(iUser).ExecuteCommandAsync();
116-
if (iUserRes <= 0)
117-
{
118-
throw Oops.Oh("保存钉钉用户错误");
119-
}
103+
await _dingTalkUserRepo.CopyNew().AsInsertable(iUser).ExecuteCommandAsync();
120104
}
121-
#endregion
122105

123-
#region 更新钉钉用户
124-
var uUser = uDingTalkUser
125-
.Select(res => new DingTalkUser
106+
// 更新钉钉用户
107+
var uUser = uDingTalkUser.Select(res => new DingTalkUser
126108
{
127-
Id = sysDingTalkUserIdList.Where(d => d.DingTalkUserId == res.UserId).Select(d => d.Id).FirstOrDefault(),
109+
Id = sysDingTalkUserIdList.Where(u => u.DingTalkUserId == res.UserId).Select(u => u.Id).FirstOrDefault(),
128110
DingTalkUserId = res.UserId,
129-
Name = res.FieldDataList
130-
.Where(f => f.FieldCode == DingTalkConst.NameField)
131-
.Select(f => f.FieldValueList.Select(v => v.Value).FirstOrDefault())
132-
.FirstOrDefault(),
133-
Mobile = res.FieldDataList
134-
.Where(f => f.FieldCode == DingTalkConst.MobileField)
135-
.Select(f => f.FieldValueList.Select(v => v.Value).FirstOrDefault())
136-
.FirstOrDefault(),
137-
JobNumber = res.FieldDataList
138-
.Where(f => f.FieldCode == DingTalkConst.JobNumberField)
139-
.Select(f => f.FieldValueList.Select(v => v.Value).FirstOrDefault())
140-
.FirstOrDefault(),
111+
Name = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.NameField).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
112+
Mobile = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.MobileField).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
113+
JobNumber = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.JobNumberField).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
141114
}).ToList();
142115
if (uUser.Count > 0)
143116
{
144-
var uUserRes = await _dingTalkUserRepo.CopyNew().AsUpdateable(uUser)
145-
.UpdateColumns(d => new
117+
await _dingTalkUserRepo.CopyNew().AsUpdateable(uUser).UpdateColumns(u => new
146118
{
147-
d.DingTalkUserId,
148-
d.Name,
149-
d.Mobile,
150-
d.JobNumber,
151-
d.UpdateTime,
152-
d.UpdateUserName,
153-
d.UpdateUserId,
119+
u.DingTalkUserId,
120+
u.Name,
121+
u.Mobile,
122+
u.JobNumber,
123+
u.UpdateTime,
124+
u.UpdateUserName,
125+
u.UpdateUserId,
154126
}).ExecuteCommandAsync();
155-
if (uUserRes <= 0)
156-
{
157-
throw Oops.Oh("更新钉钉用户错误");
158-
}
159127
}
160-
#endregion
161-
// 通过系统用户账号(工号),更新钉钉用户表里面的系统用户id
162-
var sysUser = await _sysUserRep.AsQueryable().Select(x => new
163-
{
164-
x.Id,
165-
x.Account
166-
}).ToListAsync();
128+
129+
// 通过系统用户账号(工号),更新钉钉用户表里面的系统用户Id
130+
var sysUser = await _sysUserRep.AsQueryable()
131+
.Select(u => new
132+
{
133+
u.Id,
134+
u.Account
135+
}).ToListAsync();
167136
var sysDingTalkUser = await _dingTalkUserRepo.AsQueryable()
168-
.Where(d => sysUser.Any(u => u.Account == d.JobNumber))
169-
.Select(x => new
137+
.Where(u => sysUser.Any(m => m.Account == u.JobNumber))
138+
.Select(u => new
170139
{
171-
x.Id,
172-
x.JobNumber,
173-
x.Mobile
140+
u.Id,
141+
u.JobNumber,
142+
u.Mobile
174143
}).ToListAsync();
175-
var uSysDingTalkUser = sysDingTalkUser.Select(d => new DingTalkUser
144+
var uSysDingTalkUser = sysDingTalkUser.Select(u => new DingTalkUser
176145
{
177-
Id = d.Id,
178-
SysUserId = sysUser.Where(u => u.Account == d.JobNumber).Select(u => u.Id).FirstOrDefault(),
146+
Id = u.Id,
147+
SysUserId = sysUser.Where(m => m.Account == u.JobNumber).Select(u => u.Id).FirstOrDefault(),
179148
}).ToList();
180-
var uSysDingTalkUserRes = await _dingTalkUserRepo.CopyNew().AsUpdateable(uSysDingTalkUser)
181-
.UpdateColumns(d => new
149+
150+
await _dingTalkUserRepo.CopyNew().AsUpdateable(uSysDingTalkUser).UpdateColumns(u => new
182151
{
183-
d.SysUserId,
184-
d.UpdateTime,
185-
d.UpdateUserName,
186-
d.UpdateUserId,
152+
u.SysUserId,
153+
u.UpdateTime,
154+
u.UpdateUserName,
155+
u.UpdateUserId,
187156
}).ExecuteCommandAsync();
188-
if (uSysDingTalkUserRes <= 0)
189-
{
190-
_logger.LogError("同步钉钉用户错误");
191-
return;
192-
}
157+
193158
var originColor = Console.ForegroundColor;
194-
Console.ForegroundColor = ConsoleColor.Yellow;
159+
Console.ForegroundColor = ConsoleColor.Blue;
195160
Console.WriteLine("【" + DateTime.Now + "】同步钉钉用户");
196161
Console.ForegroundColor = originColor;
197162
}
198-
199163
}

Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Service/DingTalkService.cs

+1-7
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,12 @@ public class DingTalkService : IDynamicApiController, IScoped
1616
{
1717
private readonly IDingTalkApi _dingTalkApi;
1818
private readonly DingTalkOptions _dingTalkOptions;
19-
private readonly SqlSugarRepository<DingTalkUser> _dingTalkUserRepo;
20-
private readonly SqlSugarRepository<SysUser> _sysUserRep;
2119

2220
public DingTalkService(IDingTalkApi dingTalkApi,
23-
IOptions<DingTalkOptions> dingTalkOptions,
24-
SqlSugarRepository<DingTalkUser> dingTalkUserRepo,
25-
SqlSugarRepository<SysUser> sysUserRep)
21+
IOptions<DingTalkOptions> dingTalkOptions)
2622
{
2723
_dingTalkApi = dingTalkApi;
2824
_dingTalkOptions = dingTalkOptions.Value;
29-
_dingTalkUserRepo = dingTalkUserRepo;
30-
_sysUserRep = sysUserRep;
3125
}
3226

3327
/// <summary>

Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Service/Dto/GetDingTalkToken.cs

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
namespace Admin.NET.Plugin.DingTalk;
1010

11-
1211
public class GetDingTalkTokenOutput
1312
{
1413
/// <summary>

Admin.NET/Plugins/Admin.NET.Plugin.GoView/Admin.NET.Plugin.GoView.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<TargetFramework>net6.0</TargetFramework>
@@ -20,7 +20,7 @@
2020
</ItemGroup>
2121

2222
<ItemGroup>
23-
<None Update="GoView.json">
23+
<None Update="Configuration\GoView.json">
2424
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
2525
</None>
2626
</ItemGroup>

Admin.NET/Plugins/Admin.NET.Plugin.GoView/Service/GoViewSys/GoViewSysService.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace Admin.NET.Plugin.GoView.Service;
1212
/// 系统登录服务 🧩
1313
/// </summary>
1414
[UnifyProvider("GoView")]
15-
[ApiDescriptionSettings(GoViewConst.GroupName, Module = "goview", Name = "sys", Order = 500)]
15+
[ApiDescriptionSettings(GoViewConst.GroupName, Module = "goview", Name = "sys", Order = 100)]
1616
public class GoViewSysService : IDynamicApiController
1717
{
1818
private readonly SysAuthService _sysAuthService;

0 commit comments

Comments
 (0)