d_sms_service/APT.MicroApi/APT.OP.WebApi/Controllers/Api/TenantController.cs

211 lines
8.6 KiB
C#
Raw Normal View History

2024-10-28 13:45:58 +08:00
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Entities.OP;
using APT.BaseData.Domain.Msg;
using APT.Infrastructure.Api;
using APT.Infrastructure.Api.Redis;
using APT.Infrastructure.Core;
using APT.Migrations;
using APT.Utility;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace APT.OP.WebApi.Controllers.Api
{
[Route("api/OP/Tenant")]
public partial class TenantController : AuthorizeApiController<T_OP_TENANT>
{
/// <summary>
/// 排序分页查询数据
/// </summary>
/// <param name="pageFilter">分页过滤实体</param>
/// <returns></returns>
[HttpPost, Route("OrderPagedTemplate")]
public PagedActionResult<T_OP_TENANT> OrderPagedTemplate([FromBody] KeywordPageFilter pageFilter)
{
return WitOrderPaged(x => x.IS_TEMPLATE == true, pageFilter);
}
/// <returns></returns>
[HttpPost, Route("Enable")]
public JsonActionResult<bool> Enable([FromBody] T_OP_TENANT entity)
{
return SafeExecute<bool>(() =>
{
var filter = new BaseFilter();
filter.IgnoreOrgRule = true;
var org = this.GetEntities<T_FM_ORGANIZATION>(x => x.ID == entity.ID, filter).FirstOrDefault();
org.ENABLE_STATUS = 1;
entity.ENABLE_STATUS = 1;
T_FM_ORGANIZATION tenantOrg = new T_FM_ORGANIZATION();
var targetDB = this.GetEntities<T_OP_TENANT_DB_CONN>(x => x.ID == entity.DB_CONN_ID, filter).FirstOrDefault();
if (targetDB != null && !string.IsNullOrEmpty(targetDB.DB_CONN))
{
var Conn = targetDB.DB_CONN;
using (var context = new MigrationContext(Conn))
{
tenantOrg = context.GetEntities<T_FM_ORGANIZATION>(x => x.ID == entity.ID, null).FirstOrDefault();
tenantOrg.ENABLE_STATUS = 1;
context.UpdateEntity(tenantOrg);
context.SaveChanges();
}
}
this.UnifiedCommit(() =>
{
this.UpdateEntityNoCommit(entity);
this.UpdateEntityNoCommit(org);
});
return true;
});
}
/// <summary>
/// 新增修改租户信息
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost, Route("TenantUpdate")]
public JsonActionResult<bool> TenantUpdate([FromBody] T_OP_TENANT tenant)
{
return SafeExecute<bool>(() =>
{
var orgFilter = new BaseFilter();
orgFilter.IgnoreOrgRule = true;
#region
var tenantDB = this.GetEntity<T_OP_TENANT_DB_CONN>(x => x.ID == tenant.DB_CONN_ID, orgFilter);
string value = EncryptHelper.AesEncrypt(tenantDB.DB_CONN, ConfigurationManager.AppSettings["ConnDataKey"]);
var tenantKey = ConfigurationManager.AppSettings["TenantConnKey"] + tenant.CODE;
var result = CsRedisManager.StringSet(tenantKey, value);
#endregion
T_FM_ORGANIZATION org = null;
bool isupdate = false;
#region
var targetDB = this.GetEntity<T_OP_TENANT_DB_CONN>(x => x.ID == tenant.DB_CONN_ID, orgFilter);
if (targetDB != null && !string.IsNullOrEmpty(targetDB.DB_CONN))
{
var Conn = targetDB.DB_CONN;
using (var context = new MigrationContext(Conn))
{
org = context.GetEntities<T_FM_ORGANIZATION>(x => x.ID == tenant.ID, null).FirstOrDefault();
}
}
#endregion
#region
if (org == null)
{
org = new T_FM_ORGANIZATION()
{
ID = tenant.ID,
ORG_ID = tenant.ID,
IS_DELETED = false,
ENTITY_ORG_TPYE = 2,
FLOW_STATUS = 2,
FLOW_SEND_STATUS = 0,
CREATE_TIME = DateTime.Now
};
tenant.EXPIRATION_TIME = DateTime.Now.AddYears(1);//默认新租户1年有效期
}
else
isupdate = true;
org.TENANT_CODE = tenant.CODE;
// org.CODE = tenant.CODE;
org.CODE = "0001";
org.NAME = tenant.NAME;
org.ENABLE_STATUS = tenant.ENABLE_STATUS;
org.MODIFY_TIME = DateTime.Now;
#endregion
#region
UnifiedCommit(() =>
{
if (isupdate)
{
this.UpdateEntityNoCommit(tenant);
this.UpdateEntityNoCommit(org);
}
else
{
this.AddEntityNoCommit(tenant);
this.AddEntityNoCommit(org);
}
});
var Connnect = targetDB.DB_CONN;
using (var context = new MigrationContext(Connnect))
{
try
{
if (ConfigurationManager.ConnectionStrings["default"].ToString() != Connnect)
{
if (isupdate)
{
context.UpdateEntity(org);
context.SaveChanges();
}
else
{
context.AddEntity(org);
context.SaveChanges();
}
}
context.SaveChanges();
}
catch (Exception ex)
{
context.RollbackTransaction();
this.ThrowError("010001", ex.Message + ",StackTrace:" + ex.StackTrace + ",Source:" + ex.Source);
}
}
#endregion
return true;
});
}
/// <summary>
/// 重置密码
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
[HttpPost, Route("ReSetPwd")]
public JsonActionResult<bool> ReSetPwd([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
var orgFilter = new BaseFilter();
orgFilter.IgnoreOrgRule = true;
var tenant = this.GetEntities<T_OP_TENANT>(x => x.ID ==new Guid(filter.Keyword), orgFilter).FirstOrDefault();
var targetDB = this.GetEntities<T_OP_TENANT_DB_CONN>(x => x.ID == tenant.DB_CONN_ID, orgFilter).FirstOrDefault();
if (targetDB != null && !string.IsNullOrEmpty(targetDB.DB_CONN))
{
var Conn = targetDB.DB_CONN;
using (var context = new MigrationContext(Conn))
{
string userId = tenant.USER_ID.ToString();
if (string.IsNullOrEmpty(userId))
throw new Exception(ErrMsg.CM_NOEXIT_USER);
var user = context.GetEntity<T_FM_USER>(x=>x.ID==new Guid(userId),null);
user.PASSWORD = "E10ADC3949BA59ABBE56E057F20F883E";//默认密码123456
context.UpdateEntity(user);
context.SaveChanges();
}
}
return true;
});
}
/// <summary>
/// 排序查询所有数据
/// </summary>
/// <param name="filter">过滤实体</param>
/// <returns></returns>
[HttpPost, Route("VersionOrderEntities")]
public JsonActionResult<IEnumerable<T_OP_TENANT>> VersionOrderEntities([FromBody] KeywordFilter filter)
{
var templateId = filter.Parameter10;
return WitOrderEntities(x => x.TEMPLATE_ID == new Guid(templateId), filter);
}
}
}