using DocumentServiceAPI.Model.cyDocumentModel;
|
using DocumentServiceAPI.Model.Oder;
|
using DocumentServiceAPI.Model.Permissions;
|
using DocumentServiceAPI.Model.UserInfoModel;
|
using Furion;
|
using Furion.JsonSerialization;
|
using Furion.Logging.Extensions;
|
using Furion.Schedule;
|
using InitQ.Abstractions;
|
using InitQ.Attributes;
|
using InitQ.Cache;
|
using Microsoft.Extensions.Options;
|
using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace DocumentServiceApi.InitQMessage
|
{
|
/// <summary>
|
/// 消息接收处理函数
|
/// </summary>
|
public class MessageReceive: IRedisSubscribe
|
{
|
private InitQ.Cache.ICacheService _cacheService;
|
public MessageReceive(InitQ.Cache.ICacheService cacheService)
|
{
|
_cacheService = cacheService;
|
}
|
|
/// <summary>
|
/// 初始化订单处理
|
/// </summary>
|
/// <param name="msg"></param>
|
/// <returns></returns>
|
[Subscribe(INITQMessageDefine.InitTenantOder)]
|
private async Task InitTenantOder(string msg)
|
{
|
TenantOderInfo? obj = JSON.Deserialize<TenantOderInfo>(msg);
|
if(obj==null)
|
{
|
$"InitTenantOder 初始化 msg 对象错误 ,msg为{msg}".LogInformation<MessageReceive>();
|
return;
|
}
|
var _db= App.GetService<ISqlSugarClient>();
|
|
|
Oder oder = new Oder()
|
{
|
Amount = obj.Amount,
|
CreatBy = "消息队列 InitTenantOder",
|
CreatTime = DateTime.Now,
|
Description = obj.Description,
|
EmployeeCount = obj.EmployeeCount,
|
MonthCount = obj.MonthCount,
|
UnitCount = obj.UnitCount,
|
PayType = obj.PayType,
|
PayTime = obj.PayTime,
|
ZcUserID = obj.ZcUserID,
|
ITCode = obj.ITCode,
|
HasDocumentPermission=obj.HasDocumentPermission
|
|
};
|
TenantInfo? Tinfo = await _db.Queryable<TenantInfo>().Where(x=>x.ZcUserID==obj.ZcUserID).SingleAsync();
|
if(Tinfo==null)
|
{
|
Tinfo = new TenantInfo
|
{
|
ZcUserID = obj.ZcUserID,
|
ItCode = obj.ITCode,
|
CreatBy = "消息队列 InitTenantOder",
|
CreatTime = DateTime.Now,
|
Description = obj.Description,
|
Name =obj.TenantName ,
|
PsW = obj.ITCode.Substring(obj.ITCode.Length - 4),
|
|
|
};
|
TenantPermissions permissions = new TenantPermissions()
|
{
|
CreatBy = "消息队列 InitTenantOder",
|
CreatTime = DateTime.Now,
|
Description = obj.Description,
|
EmployeeMaxCount = obj.EmployeeCount ?? 0,
|
UnitMaxCount = obj.UnitCount ?? 0,
|
|
HasDocumentPermission=obj.HasDocumentPermission,
|
OverTime = DateTime.Now.AddMonths(obj.MonthCount ?? 0),
|
|
|
|
};
|
|
//新建租户员工
|
Document_EmployeeInfo employeeInfo = new Document_EmployeeInfo()
|
{
|
EmployeeName = "集团账号",
|
UserName = Tinfo.ItCode,
|
AdviseFlag = 2,
|
UserId = 0,
|
IsWork = 1,
|
UserPassWord = Tinfo.ItCode.Substring(Tinfo.ItCode.Length - 6),
|
Job = "集团用户",
|
IsLogin = true,
|
LastUpdateName = "消息队列 InitTenantOder",
|
LastUpdateTime = DateTime.Now,
|
};
|
EmployeeAtTenant employeeAtTenant = new EmployeeAtTenant()
|
{
|
CreatBy = "消息队列 InitTenantOder",
|
CreatTime = DateTime.Now,
|
|
};
|
|
Document_TenderUnit tenderUnit = new Document_TenderUnit()
|
{
|
UnitName = obj.TenantName ?? "集团公司",
|
AdviseFlag = 2,
|
UserId = 0,
|
CreatTime = DateTime.Now.ToString("yyyy MM dd"),
|
LastUpdateName = "消息队列 InitTenantOder",
|
LastUpdateTime = DateTime.Now,
|
IsDeled = false,
|
IsEn = true,
|
|
|
};
|
|
try
|
{
|
await _db.AsTenant().BeginTranAsync();
|
|
var id= await _db.Insertable(Tinfo).ExecuteReturnIdentityAsync();
|
var eid = await _db.Insertable(employeeInfo).ExecuteReturnIdentityAsync();
|
permissions.TenantId = id;
|
employeeAtTenant.TenantID = id;
|
employeeAtTenant.EmployeeID = eid;
|
tenderUnit.TenantId = id;
|
await _db.Insertable(tenderUnit).ExecuteCommandAsync();
|
await _db.Insertable(employeeAtTenant).ExecuteCommandAsync();
|
await _db.Insertable(permissions).ExecuteCommandAsync ();
|
await _db.Insertable(oder).ExecuteCommandAsync();
|
await _db.AsTenant().CommitTranAsync();
|
}
|
catch (Exception e)
|
{
|
await _db.AsTenant().RollbackTranAsync();
|
$"新建租户处理失败 msg:{msg},e:{e.ToString()} BY:消息队列 InitTenantOder".LogInformation<MessageReceive>();
|
return;
|
}
|
|
|
}
|
else
|
{
|
var Employee = await _db.Queryable<EmployeeAtTenant,Document_EmployeeInfo>((EAT, E) => new JoinQueryInfos(
|
|
JoinType.Left, EAT.EmployeeID == E.EmployeeId
|
)).Where((EAT, E) => EAT.TenantID==Tinfo.Id).Select((EAT,E)=>E).FirstAsync();
|
|
Tinfo.ItCode = obj.ITCode;
|
Tinfo.UpdataBy = "消息队列 InitTenantOder";
|
Tinfo.UpdataTime = DateTime.Now;
|
Tinfo.IsDel = false;
|
Tinfo.IsEn = true;
|
|
var tp= await _db.Queryable<TenantPermissions>().Where(x=>x.TenantId==Tinfo.Id).FirstAsync();
|
|
try
|
{
|
await _db.AsTenant().BeginTranAsync();
|
if (Tinfo.ItCode != obj.ITCode)
|
{
|
|
await _db.Updateable(Tinfo).ExecuteCommandAsync();
|
};
|
if (tp == null)
|
{
|
tp = new TenantPermissions()
|
{
|
CreatBy = "消息队列 InitTenantOder",
|
CreatTime = DateTime.Now,
|
IsDel = false,
|
IsEn = true,
|
EmployeeMaxCount=obj.EmployeeCount??0,
|
UnitMaxCount=obj.UnitCount??0,
|
OverTime=DateTime.Now.AddMinutes(obj.MonthCount??0),
|
TenantId= Tinfo.Id,
|
|
};
|
await _db.Insertable(tp).ExecuteCommandAsync();
|
|
|
}
|
else
|
{
|
tp.IsDel = false;
|
tp.IsEn = true;
|
tp.UnitMaxCount = obj.UnitCount ?? tp.UnitMaxCount;
|
tp.EmployeeMaxCount = obj.EmployeeCount ?? tp.EmployeeMaxCount;
|
tp.OverTime = tp.OverTime.AddMonths(obj.MonthCount??0);
|
tp.UpdataBy = "消息队列 InitTenantOder";
|
tp.UpdataTime = DateTime.Now;
|
|
await _db.Updateable(tp).ExecuteCommandAsync();
|
|
}
|
if (obj.ITCode != Employee.UserName)
|
{
|
//如果发现用户名已经更改,则该集团员工用户名跟随更改
|
Employee.UserName = obj.ITCode;
|
Employee.LastUpdateName= "消息队列 InitTenantOder";
|
Employee.LastUpdateTime = DateTime.Now;
|
await _db.Updateable(Employee).ExecuteCommandAsync();
|
}
|
await _db.Insertable(oder).ExecuteCommandAsync();
|
await _db.AsTenant().CommitTranAsync();
|
|
|
|
|
|
}
|
catch (Exception e)
|
{
|
|
await _db.AsTenant().RollbackTranAsync();
|
$"修改租户权限失败 msg:{msg},e:{e.ToString()} By:消息队列 InitTenantOder".LogInformation<MessageReceive>();
|
return;
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
}
|
|
/// <summary>
|
/// 发送消息给用户中,用户中心会响应这个消息
|
/// </summary>
|
/// <param name="msg"></param>
|
/// <returns></returns>
|
[SubscribeDelay(INITQMessageDefine.DTSendMessage)]
|
private async Task SendMessage(string msg)
|
{
|
|
await _cacheService.ListRightPushAsync(INITQMessageDefine.DTSendMessage, msg);
|
}
|
|
}
|
|
|
}
|