using SqlSugar; 
 | 
using System; 
 | 
using System.Collections.Generic; 
 | 
using System.Linq; 
 | 
using System.Text; 
 | 
using System.Threading.Tasks; 
 | 
using WIDESEA_Core; 
 | 
using WIDESEA_Core.AOP; 
 | 
using WIDESEA_Core.BaseRepository; 
 | 
using WIDESEA_Core.BaseServices; 
 | 
using WIDESEA_Core.Const; 
 | 
using WIDESEA_Core.Helper; 
 | 
using WIDESEA_Core.Seed; 
 | 
using WIDESEA_ISystemRepository; 
 | 
using WIDESEA_ISystemService; 
 | 
using WIDESEA_Model.Models; 
 | 
  
 | 
namespace WIDESEA_SystemService 
 | 
{ 
 | 
    public class Sys_TenantService : ServiceBase<Sys_Tenant, ISys_TenantRepository>, ISys_TenantService 
 | 
    { 
 | 
        private IUnitOfWorkManage _unitOfWorkManage; 
 | 
  
 | 
        public ISys_TenantRepository Repository => BaseDal; 
 | 
  
 | 
        public Sys_TenantService(ISys_TenantRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) 
 | 
        { 
 | 
            _unitOfWorkManage = unitOfWorkManage; 
 | 
        } 
 | 
  
 | 
        public WebResponseContent InitTenantInfo(string tenantName, int tenantType) 
 | 
        { 
 | 
            WebResponseContent content = new WebResponseContent(); 
 | 
            try 
 | 
            { 
 | 
                Sys_Tenant tenant = new Sys_Tenant() 
 | 
                { 
 | 
                    ConnectionString = TenantConst.DBConStr, 
 | 
                    DbType = 1, 
 | 
                    Status = 1, 
 | 
                    TenantName = tenantName, 
 | 
                    TenantType = tenantType, 
 | 
                    CreateDate = DateTime.Now, 
 | 
                    Creater = "1111" 
 | 
                }; 
 | 
  
 | 
                int tenantId = BaseDal.Db.Insertable(tenant).ExecuteReturnIdentity(); 
 | 
  
 | 
                tenant = BaseDal.QueryFirst(x => x.TenantId == tenantId); 
 | 
  
 | 
                tenant.ConnectionString = string.Format(TenantConst.DBConStr, ".", "Tenant_WMSDB_" + tenantId, "sa", "P@ssw0rd").EncryptDES(AppSecret.DB); 
 | 
  
 | 
                BaseDal.UpdateData(tenant); 
 | 
  
 | 
                InitTenantDb(tenant); 
 | 
                content = WebResponseContent.Instance.OK(); 
 | 
            } 
 | 
            catch (Exception ex) 
 | 
            { 
 | 
                content = WebResponseContent.Instance.Error(ex.Message); 
 | 
            } 
 | 
            return content; 
 | 
        } 
 | 
  
 | 
        public void InitTenantDb(Sys_Tenant tenant) 
 | 
        { 
 | 
            string conStr = tenant.ConnectionString.DecryptDES(AppSecret.DB); 
 | 
  
 | 
            ConnectionConfig connectionConfig = new ConnectionConfig() 
 | 
            { 
 | 
                ConfigId = tenant.TenantId, 
 | 
                ConnectionString = conStr, 
 | 
                DbType = (DbType)tenant.DbType, 
 | 
                IsAutoCloseConnection = true, 
 | 
                AopEvents = new AopEvents() 
 | 
                { 
 | 
                    DataExecuting = SqlSugarAop.DataExecuting 
 | 
                } 
 | 
            }; 
 | 
            DBSeed.InitTenantSeedAsync(Db.AsTenant(), connectionConfig); 
 | 
        } 
 | 
    } 
 | 
} 
 |