211 lines
8.6 KiB
C#
211 lines
8.6 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|