You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

111 lines
6.7 KiB

  1. using Learun.DataBase.Repository;
  2. using Learun.Util;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Text;
  7. namespace Learun.Application.Base.SystemModule
  8. {
  9. /// <summary>
  10. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  11. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  12. /// 创 建:超级管理员
  13. /// 日 期:2017-12-19 12:03
  14. /// 描 述:系统数据初始化
  15. /// </summary>
  16. public class DatabaseInitService : RepositoryFactory
  17. {
  18. /// <summary>
  19. /// 系统数据初始化
  20. /// <summary>
  21. /// <returns></returns>
  22. public void InitDatabase()
  23. {
  24. try
  25. {
  26. //备份数据库;清除系统所有业务数据,只保留system账号,admin账号、角色数据等信息;
  27. //文件存放路径格式:/Resource/DataBaseBackup/{date}/{file}_{time}.{后缀名}
  28. var pathoffirst = Config.GetValue("dbbackuppath");
  29. string pathofdate = DateTime.Now.ToString("yyyyMMdd");
  30. string pathoftime = DateTime.Now.ToString("HHmmss") + CommonHelper.RndNum(6);
  31. string FileEextension = ".bak";
  32. var databaseName1 = this.BaseRepository("BaseDb").getDbConnection().Database;
  33. var databaseName2 = this.BaseRepository("CollegeMIS").getDbConnection().Database;
  34. var directoryPath = $"{pathoffirst}/{pathofdate}";
  35. var filePath1 = $"{pathoffirst}/{pathofdate}/{databaseName1 + "_" + pathoftime}{FileEextension}";
  36. var filePath2 = $"{pathoffirst}/{pathofdate}/{databaseName2 + "_" + pathoftime}{FileEextension}";
  37. //创建文件夹
  38. if (!Directory.Exists(directoryPath))
  39. {
  40. Directory.CreateDirectory(directoryPath);
  41. }
  42. //备份数据库
  43. string backupSql1 = "backup database " + databaseName1 + " to disk='" + filePath1 + "' with format;";
  44. this.BaseRepository("BaseDb").ExecuteAsyncBySql(backupSql1);
  45. string backupSql2 = "backup database " + databaseName2 + " to disk='" + filePath2 + "' with format;";
  46. this.BaseRepository("CollegeMIS").ExecuteAsyncBySql(backupSql2);
  47. //清除业务数据
  48. if (true)
  49. {
  50. var strSql1 = new StringBuilder();
  51. strSql1.Append("declare @trun_name varchar(50) ");
  52. strSql1.Append("declare name_cursor cursor for ");
  53. strSql1.Append("select 'truncate table ' + name+';' from sysobjects where xtype='U' and name <> 'LR_Base_User' and name <> 'LR_Base_Role' and name<>'LR_App_Function' and name<>'LR_Base_Authorize' and name<>'LR_Base_DatabaseLink' ");
  54. strSql1.Append(" and name<>'LR_Base_DataCondition' and name<>'LR_Base_DataItem' and name<>'LR_Base_DataItemDetail' and name<>'LR_Base_DataRelation' and name<>'LR_Base_DataSource' ");
  55. strSql1.Append(" and name<>'LR_Base_DbField' and name<>'LR_Base_Interface' and name<>'LR_Base_Logo' and name<>'LR_Base_Module' and name<>'LR_Base_ModuleButton' and name<>'LR_Base_ModuleColumn' ");
  56. strSql1.Append(" and name<>'LR_Base_ModuleForm' and name<>'LR_Base_UserRelation' and name<>'LR_DT_Chart' and name<>'LR_DT_List' and name<>'LR_DT_Target' and name<>'LR_Excel_Export' and name<>'LR_Excel_Import' ");
  57. strSql1.Append(" and name<>'LR_Excel_ImportFileds' and name<>'LR_Form_Relation' and name<>'LR_Form_Scheme' and name<>'LR_Form_SchemeInfo' and name<>'LR_Lg_Map' and name<>'LR_Lg_Type' and name<>'LR_NWF_Scheme' ");
  58. strSql1.Append(" and name<>'LR_NWF_SchemeAuth' and name<>'LR_NWF_SchemeInfo' and name <>'LR_Base_ThematicManagement' and name <>'LoginModel' and name <>'LR_MS_StrategyInfo' and name <>'Sys_QRCodeInLogin' and name <>'Sys_UpdateRecord' and name <>'TeachSwitch'");
  59. strSql1.Append("open name_cursor ");
  60. strSql1.Append("fetch next from name_cursor into @trun_name ");
  61. strSql1.Append("while @@FETCH_STATUS = 0 ");
  62. strSql1.Append("begin exec (@trun_name) fetch next from name_cursor into @trun_name end ");
  63. strSql1.Append("close name_cursor ");
  64. strSql1.Append("deallocate name_cursor ");
  65. this.BaseRepository().ExecuteBySql(strSql1.ToString());
  66. var strSql2 = new StringBuilder();
  67. strSql2.Append("delete from LR_Base_User where F_Account <> 'System' and F_Account <> 'admin';");
  68. strSql2.Append("delete from LR_Base_Authorize where F_ObjectId <> 'd61e1853-cdee-4d49-a5e1-e230f1098e52';");
  69. strSql2.Append("delete from LR_Base_UserRelation where F_UserId <> '9f1a9d12-f4c2-4c28-9c60-5491090084ed';");
  70. this.BaseRepository().ExecuteBySql(strSql2.ToString());
  71. }
  72. if (true)
  73. {
  74. var strSql1 = new StringBuilder();
  75. strSql1.Append("declare @trun_name varchar(50) ");
  76. strSql1.Append("declare name_cursor cursor for ");
  77. strSql1.Append("select 'delete from ' + name+';' from sysobjects where xtype='U' and name<>'DIC_AREA' and name<>'DIC_CITY' and name<>'DIC_PROVINCE' and name<>'BCdNationality' and name<>'BCdFamilyOrigin' and name<>'BCdPartyFace' and name<>'BCdSubjectSpecies' and name<>'BCdForeignLanguage' and name<>'BCdTitleOfTechPost' and name<>'BCdDegree' and name<>'BCdCultureDegree' and name<>'BCdOverseasChinese' and name<>'BCdHealthStatus' and name<>'BCdAbnormityMoveReason' and name<>'BCdAbnormitySort' and name<>'BCdEncourgeLevel' and name<>'BCdEncourgeSort' and name<>'BCdMatriculateSort' and name<>'BCdPlanForm' and name<>'BCdPunish' and name<>'BCdTestMode' and name<>'BCdTestStuSort' ");
  78. strSql1.Append("open name_cursor ");
  79. strSql1.Append("fetch next from name_cursor into @trun_name ");
  80. strSql1.Append("while @@FETCH_STATUS = 0 ");
  81. strSql1.Append("begin exec (@trun_name) fetch next from name_cursor into @trun_name end ");
  82. strSql1.Append("close name_cursor ");
  83. strSql1.Append("deallocate name_cursor ");
  84. this.BaseRepository("CollegeMIS").ExecuteBySql(strSql1.ToString());
  85. }
  86. }
  87. catch (Exception ex)
  88. {
  89. if (ex is ExceptionEx)
  90. {
  91. throw;
  92. }
  93. else
  94. {
  95. throw ExceptionEx.ThrowServiceException(ex);
  96. }
  97. }
  98. }
  99. }
  100. }