using Furion; using Furion.DataEncryption; using Furion.Logging; using Furion.TaskScheduler; using Myshipping.Core.Entity; using Myshipping.Core.Service; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Myshipping.Core.Job { /// /// 和川用户同步 /// public class UserSyncWorker : ISpareTimeWorker { [SpareTime(60000, "UserSyncWorker", Description = "同步用户", DoOnce = false, StartNow = true, ExecuteType = SpareTimeExecuteTypes.Serial)] public void SyncUser(SpareTimer timer, long count) { Log.Information($"UserSyncWorker {DateTime.Now}"); var tenantId = 142307070918780L; var roleId = 175633246363717L;//普通用户 var _sugerClient = App.GetService(); _sugerClient.QueryFilter.Clear(); var _repPingTaiUser = App.GetService>(); var _repUser = App.GetService>(); var _repEmp = App.GetService>(); var _repOrg = App.GetService>(); var _repPos = App.GetService>(); var _repEmpPos = App.GetService>(); var _repUserRole = App.GetService>(); var users = _repPingTaiUser.Where(u => u.CompId == "5913ab4b-ff5e-4d31-8b6c-09911bdfc0d4").ToList(); var sysUsers = _repUser.Where(x => x.TenantId == tenantId).ToList(); Log.Information($"准备同步用户数据,共{users.Count}条"); var keyDES = App.GetOptions().DES; var org = _repOrg.FirstOrDefault(x => x.TenantId == tenantId); var pos = _repPos.FirstOrDefault(x => x.TenantId == tenantId); _sugerClient.Ado.BeginTran(System.Data.IsolationLevel.ReadCommitted); try { foreach (var user in users) { var existUser = sysUsers.Count(x => x.Account == user.CODENAME) > 0; SysUser sysUser = null; if (!existUser) { sysUser = new SysUser(); } else { sysUser = sysUsers.First(x => x.Account == user.CODENAME); } sysUser.Account = user.CODENAME; sysUser.Password = DESCEncryption.Encrypt(user.PASSWORD, keyDES); sysUser.TenantId = tenantId; sysUser.Name = user.SHOWNAME; sysUser.AdminType = AdminType.None; if (!existUser) { var newUser = _repUser.Insert(sysUser); var emp = new SysEmp(); emp.Id = sysUser.Id; emp.OrgId = org.Id; emp.OrgName = org.Name; _repEmp.Insert(emp); var empPos = new SysEmpPos(); empPos.SysEmpId = emp.Id; empPos.SysPosId = pos.Id; _repEmpPos.Insert(empPos); var userrole = new SysUserRole(); userrole.SysRoleId = roleId; userrole.SysUserId = sysUser.Id; _repUserRole.Insert(userrole); } else { _repUser.Update(sysUser); } } _sugerClient.Ado.CommitTran(); } catch { _sugerClient.Ado.RollbackTran(); throw; } } } }