@ -1,5 +1,6 @@
using Furion ;
using Furion.DataEncryption ;
using Furion.EventBus ;
using Furion.RemoteRequest.Extensions ;
using Microsoft.AspNetCore.Http ;
using Microsoft.Extensions.DependencyInjection ;
@ -29,39 +30,18 @@ namespace Myshipping.Core.MQ
{
private readonly IServiceScopeFactory _scopeFactory ;
private readonly IServiceScope _serviceScope ;
private readonly ISysUserService _serviceUser ;
private readonly ILogger < RecCompanyUserChangeService > _logger ;
private readonly ISysTenantService _tenantService ;
private readonly ISysUserService _userService ;
private readonly SqlSugarRepository < SysUser > _sysUserRep ;
private readonly SqlSugarRepository < SysTenant > _sysTenantRep ;
private readonly SqlSugarRepository < SysOrg > _sysOrgRep ;
private readonly SqlSugarRepository < SysPos > _sysPosRep ;
private readonly SqlSugarRepository < SysRole > _sysRoleRep ;
private readonly SqlSugarRepository < SysMenu > _sysMenuRep ;
private readonly ISysRoleMenuService _sysRoleMenuService ;
private readonly IAuthService _IAuthService ;
private readonly IEventPublisher _publisher ;
private IConnection mqConn ;
private IModel model ;
public RecCompanyUserChangeService ( IServiceScopeFactory scopeFactory , ISysUserService serviceUser , ISysRoleMenuService sysRoleMenuService , IAuthService IAuthService )
public RecCompanyUserChangeService ( IServiceScopeFactory scopeFactory )
{
_scopeFactory = scopeFactory ;
//通过这个注入DBContext
_serviceScope = _scopeFactory . CreateScope ( ) ;
_serviceUser = serviceUser ;
_IAuthService = IAuthService ;
_sysRoleMenuService = sysRoleMenuService ;
_logger = _serviceScope . ServiceProvider . GetService < ILogger < RecCompanyUserChangeService > > ( ) ;
_tenantService = _serviceScope . ServiceProvider . GetService < ISysTenantService > ( ) ;
_userService = _serviceScope . ServiceProvider . GetService < ISysUserService > ( ) ;
_sysUserRep = _serviceScope . ServiceProvider . GetService < SqlSugarRepository < SysUser > > ( ) ;
_sysTenantRep = _serviceScope . ServiceProvider . GetService < SqlSugarRepository < SysTenant > > ( ) ;
_sysOrgRep = _serviceScope . ServiceProvider . GetService < SqlSugarRepository < SysOrg > > ( ) ;
_sysPosRep = _serviceScope . ServiceProvider . GetService < SqlSugarRepository < SysPos > > ( ) ;
_sysRoleRep = _serviceScope . ServiceProvider . GetService < SqlSugarRepository < SysRole > > ( ) ;
_sysMenuRep = _serviceScope . ServiceProvider . GetService < SqlSugarRepository < SysMenu > > ( ) ;
_publisher = _serviceScope . ServiceProvider . GetService < IEventPublisher > ( ) ;
}
public override void Dispose ( )
@ -85,11 +65,13 @@ namespace Myshipping.Core.MQ
string ExchangeName = "djy.comp&user.change" ;
string QueueName = $"djy.comp&user.change.{DateTime.Now.Ticks}" ;
ConnectionFactory factory = new ConnectionFactory ( ) ;
var repoSysCfg = _serviceScope . ServiceProvider . GetService < SqlSugarRepository < SysConfig > > ( ) ;
var mqUrl = repoSysCfg . FirstOrDefault ( x = > x . Code = = "CompanyUserChangeMqUrl" ) . Value ;
_logger . LogInformation ( $"准备连接公司用户同步消息队列:{mqUrl}" ) ;
factory . Uri = new Uri ( mqUrl ) ;
mqConn = factory . CreateConnection ( "客户订舱平台 ") ;
mqConn = factory . CreateConnection ( "客户订舱平台 客户端 ") ;
model = mqConn . CreateModel ( ) ;
model . ExchangeDeclare ( ExchangeName , ExchangeType . Fanout ) ;
@ -107,207 +89,18 @@ namespace Myshipping.Core.MQ
private async void Consumer_Received ( object ch , BasicDeliverEventArgs ea )
{
//获取授权---------- (用超级管理员的权限)
LoginInput login = new LoginInput ( ) ;
login . Account = "superAdmin" ;
login . Password = "123456" ;
var rtn = "http://localhost:5000/login" . SetHttpMethod ( HttpMethod . Post ) . SetContentType ( "application/json" ) . SetBody ( login . ToJsonString ( ) ) . SetRetryPolicy ( 3 , 5000 ) . PostAsStringAsync ( ) ;
var token = JObject . Parse ( rtn . Result ) . GetStringValue ( "data" ) ;
var headers = new Dictionary < string , object > ( ) ;
headers . Add ( "Authorization" , $"Bearer {token}" ) ;
//-----
var body = ea . Body ;
var strBody = Encoding . UTF8 . GetString ( body . ToArray ( ) ) ;
var jobj = JObject . Parse ( strBody ) ;
var type = jobj . GetStringValue ( "type" ) ;
if ( type = = "CompanyAudit" ) //新公司审核通过
{
var comp = jobj . GetJObjectValue ( "company" ) ;
var compid = comp . GetStringValue ( "CompId" ) ;
var compname = comp . GetStringValue ( "CompName" ) ;
var adminShowName = comp . GetStringValue ( "AdminShowName" ) ;
var findTenant = _sysTenantRep . FirstOrDefault ( x = > x . CompId = = compid ) ; //先根据关联ID查找
if ( findTenant = = null )
{
findTenant = _sysTenantRep . FirstOrDefault ( x = > x . Name = = compname ) ; //再根据公司全称查找
}
if ( findTenant = = null ) //找不到,新建
{
var tenant = new SysTenant ( ) ;
tenant . Id = YitIdHelper . NextId ( ) ;
tenant . Name = compname ;
tenant . AdminName = adminShowName ;
tenant . Email = $"{tenant.Id}" ;
tenant . TenantType = TenantTypeEnum . COMMON ;
tenant . CompId = compid ;
findTenant = _sysTenantRep . InsertReturnEntity ( tenant ) ;
await _tenantService . InitNewTenant ( findTenant ) ;
//新增的系统租户新增权限
GrantRoleMenuInput tenantmenuInput = new GrantRoleMenuInput ( ) ;
tenantmenuInput . Id = findTenant . Id ;
List < long > tenantGrantMenuIdList = new List < long > ( ) ;
tenantGrantMenuIdList = _sysMenuRep . AsQueryable ( ) . Where ( x = > x . Pids . Contains ( "142307070910563" ) ) . Select ( x = > x . Id ) . ToList ( ) ; //暂时写死默认新增权限管理
tenantmenuInput . GrantMenuIdList = tenantGrantMenuIdList ;
await _sysRoleMenuService . GrantMenu ( tenantmenuInput ) ;
}
}
else if ( type = = "UserJoin" ) //用户加入公司
{
var compid = jobj . GetStringValue ( "compId" ) ;
var findTenant = _sysTenantRep . FirstOrDefault ( x = > x . CompId = = compid ) ; //先根据关联ID查找
//同步用户
var user = jobj . GetJArrayValue ( "users" ) ;
//租户id
var tenantid = findTenant . Id ;
var keyDES = App . GetOptions < EncryptKeyOptions > ( ) . DES ;
foreach ( JObject item in user )
{
var GID = item . GetStringValue ( "GID" ) ;
var Accont = item . GetStringValue ( "CODENAME" ) ;
var Name = item . GetStringValue ( "SHOWNAME" ) ;
var Pass = DESCEncryption . Encrypt ( item . GetStringValue ( "PASSWORD" ) , keyDES ) ;
var Email = item . GetStringValue ( "EMAIL1" ) ;
var Phone = item . GetStringValue ( "MOBILE" ) ;
var PassWord = item . GetStringValue ( "PASSWORD" ) ;
var Org = await _sysOrgRep . AsQueryable ( ) . Filter ( null , true ) . Where ( x = > x . TenantId = = tenantid & & x . IsDeleted = = false & & x . Pid = = 0 ) . FirstAsync ( ) ;
//------ 拼接对象调用新增用户接口
AddUserInput adduser = new AddUserInput ( ) ;
adduser . Account = Accont ;
adduser . Password = PassWord ;
adduser . Confirm = PassWord ;
adduser . Sex = 1 ;
adduser . Phone = Phone ;
adduser . TenantId = tenantid ;
EmpOutput2 empOutput2 = new EmpOutput2 ( ) ;
empOutput2 . OrgId = Org . Id . ToString ( ) ;
empOutput2 . OrgName = Org . Name ;
List < long > PosIdList = new List < long > ( ) ;
var pos = _sysPosRep . AsQueryable ( ) . Filter ( null , true ) . Where ( x = > x . TenantId = = tenantid & & x . IsDeleted = = false ) . FirstAsync ( ) ;
PosIdList . Add ( pos . Id ) ;
empOutput2 . PosIdList = PosIdList ;
adduser . SysEmpParam = empOutput2 ;
await "http://localhost:5000/sysUser/add" . SetHeaders ( headers ) . SetHttpMethod ( HttpMethod . Post ) . SetBody ( adduser ) . SetRetryPolicy ( 3 , 5000 ) . PostAsStringAsync ( ) ;
// await _serviceUser.AddUser(adduser, true);
}
//-----授权角色id普通用户
var role = _sysRoleRep . AsQueryable ( ) . Filter ( null , true ) . Where ( x = > x . TenantId = = tenantid & & x . Name = = "普通用户" ) . FirstAsync ( ) ;
GrantRoleMenuInput menuInput = new GrantRoleMenuInput ( ) ;
menuInput . Id = Convert . ToInt64 ( role . Id ) ;
List < long > GrantMenuIdList = new List < long > ( ) ;
GrantMenuIdList . Add ( 351064299098181 ) ; //暂时写死 ,后续从字典获取 新增订舱台账
menuInput . GrantMenuIdList = GrantMenuIdList ;
await _sysRoleMenuService . GrantMenu ( menuInput ) ;
}
else if ( type = = "UserLeave" ) //用户离职
if ( type = = "UserLeave" ) //用户离职
{
var userId = jobj . GetJObjectValue ( "userId" ) ;
var compId = jobj . GetStringValue ( "compId" ) ;
//删除用户
_sysUserRep . Delete ( x = > x . DjyUserId = = userId . ToString ( ) ) ;
await _publisher . PublishAsync ( new ChannelEventSource ( $"CompanyUserSync:UserLeave" , strBody ) ) ;
}
else if ( type = = "CompanyUserSync" ) //公司及员工数据同步
{
//----------同步租户
var comp = jobj . GetJObjectValue ( "company" ) ;
var compid = comp . GetStringValue ( "CompId" ) ;
var compname = comp . GetStringValue ( "CompName" ) ;
var adminShowName = comp . GetStringValue ( "AdminShowName" ) ;
var findTenant = _sysTenantRep . FirstOrDefault ( x = > x . CompId = = compid ) ; //先根据关联ID查找
if ( findTenant = = null )
{
findTenant = _sysTenantRep . FirstOrDefault ( x = > x . Name = = compname ) ; //再根据公司全称查找
}
if ( findTenant = = null ) //找不到,新建
{
var tenant = new SysTenant ( ) ;
tenant . Id = YitIdHelper . NextId ( ) ;
tenant . Name = compname ;
tenant . AdminName = adminShowName ;
tenant . Email = $"{tenant.Id}" ;
tenant . TenantType = TenantTypeEnum . COMMON ;
tenant . CompId = compid ;
findTenant = _sysTenantRep . InsertReturnEntity ( tenant ) ;
await _tenantService . InitNewTenant ( findTenant ) ;
//新增的系统租户新增权限
GrantRoleMenuInput tenantmenuInput = new GrantRoleMenuInput ( ) ;
tenantmenuInput . Id = findTenant . Id ;
List < long > tenantGrantMenuIdList = new List < long > ( ) ;
tenantGrantMenuIdList = _sysMenuRep . AsQueryable ( ) . Where ( x = > x . Pids . Contains ( "142307070910563" ) ) . Select ( x = > x . Id ) . ToList ( ) ; //暂时写死默认新增权限管理
tenantmenuInput . GrantMenuIdList = tenantGrantMenuIdList ;
await _sysRoleMenuService . GrantMenu ( tenantmenuInput ) ;
}
//----------
//同步用户
var user = jobj . GetJArrayValue ( "users" ) ;
//租户id
var tenantid = findTenant . Id ;
var keyDES = App . GetOptions < EncryptKeyOptions > ( ) . DES ;
foreach ( JObject item in user )
{
var GID = item . GetStringValue ( "GID" ) ;
var Accont = item . GetStringValue ( "CODENAME" ) ;
var Name = item . GetStringValue ( "SHOWNAME" ) ;
var Pass = DESCEncryption . Encrypt ( item . GetStringValue ( "PASSWORD" ) , keyDES ) ;
var Email = item . GetStringValue ( "EMAIL1" ) ;
var Phone = item . GetStringValue ( "MOBILE" ) ;
var PassWord = item . GetStringValue ( "PASSWORD" ) ;
var Org = await _sysOrgRep . AsQueryable ( ) . Filter ( null , true ) . Where ( x = > x . TenantId = = tenantid & & x . IsDeleted = = false & & x . Pid = = 0 ) . FirstAsync ( ) ;
//------ 拼接对象调用新增用户接口
AddUserInput adduser = new AddUserInput ( ) ;
adduser . Account = Accont ;
adduser . Password = PassWord ;
adduser . Confirm = PassWord ;
adduser . Sex = 1 ;
adduser . Phone = Phone ;
adduser . TenantId = tenantid ;
EmpOutput2 empOutput2 = new EmpOutput2 ( ) ;
empOutput2 . OrgId = Org . Id . ToString ( ) ;
empOutput2 . OrgName = Org . Name ;
List < long > PosIdList = new List < long > ( ) ;
var pos = _sysPosRep . AsQueryable ( ) . Filter ( null , true ) . Where ( x = > x . TenantId = = tenantid & & x . IsDeleted = = false ) . FirstAsync ( ) ;
PosIdList . Add ( pos . Id ) ;
empOutput2 . PosIdList = PosIdList ;
adduser . SysEmpParam = empOutput2 ;
//await _serviceUser.AddUser(adduser, true);
await "http://localhost:5000/sysUser/add" . SetHeaders ( headers ) . SetHttpMethod ( HttpMethod . Post ) . SetBody ( adduser ) . SetRetryPolicy ( 3 , 5000 ) . PostAsStringAsync ( ) ;
}
//-----授权角色id普通用户
var role = _sysRoleRep . AsQueryable ( ) . Filter ( null , true ) . Where ( x = > x . TenantId = = tenantid & & x . Name = = "普通用户" ) . FirstAsync ( ) ;
GrantRoleMenuInput menuInput = new GrantRoleMenuInput ( ) ;
menuInput . Id = Convert . ToInt64 ( role . Id ) ;
List < long > GrantMenuIdList = new List < long > ( ) ;
GrantMenuIdList . Add ( 351064299098181 ) ; //暂时写死 ,后续从字典获取 新增订舱台账
menuInput . GrantMenuIdList = GrantMenuIdList ;
await _sysRoleMenuService . GrantMenu ( menuInput ) ;
await _publisher . PublishAsync ( new ChannelEventSource ( $"CompanyUserSync:CompanyUser" , strBody ) ) ;
}
_logger . LogInformation ( $"收到消息:{strBody}" ) ;