sys_init.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package controller
  2. import (
  3. "context"
  4. "github.com/shirou/gopsutil/host"
  5. "github.com/tiger1103/gfast/v3/api/v1/system"
  6. "github.com/tiger1103/gfast/v3/internal/app/system/service"
  7. "runtime"
  8. )
  9. var DbInit = sysDbInitController{}
  10. type sysDbInitController struct {
  11. BaseController
  12. }
  13. // 系统是否已经初始化
  14. func (c *sysDbInitController) IsInit(ctx context.Context, req *system.DbInitIsInitReq) (res *system.DbInitIsInitRes, err error) {
  15. res = new(system.DbInitIsInitRes)
  16. // autoInit=false则前端将不走自动初始化的流程
  17. if service.SysInitConfig["autoInit"].Bool() == false {
  18. *res = system.DbInitIsInitRes(true)
  19. return
  20. }
  21. // 判断是否已经生成配置文件
  22. *res = system.DbInitIsInitRes(service.SysInit().IsCreateConfigFile())
  23. return
  24. }
  25. // 获取环境检测信息
  26. func (c *sysDbInitController) GetEnvInfo(ctx context.Context, req *system.DbInitGetEnvInfoReq) (res *system.DbInitGetEnvInfoRes, err error) {
  27. sysInfo, err := host.Info()
  28. if err != nil {
  29. return
  30. }
  31. res = new(system.DbInitGetEnvInfoRes)
  32. *res = system.DbInitGetEnvInfoRes{
  33. "sysOsName": sysInfo.OS,
  34. "goVersion": runtime.Version(),
  35. }
  36. return
  37. }
  38. // 创建配置文件及数据库等
  39. func (c *sysDbInitController) CreateDb(ctx context.Context, req *system.DbInitCreateDbReq) (res *system.DbInitCreateDbRes, err error) {
  40. // 生成数据库
  41. err = service.SysInit().CreateDataBaseByName(ctx, req)
  42. if err != nil {
  43. return
  44. }
  45. // 生成配置文件
  46. err = service.SysInit().CreateConfigFile(ctx, req)
  47. if err != nil {
  48. return
  49. }
  50. // 加载配置文件
  51. err = service.SysInit().LoadConfigFile()
  52. if err != nil {
  53. return
  54. }
  55. // 生成数据库表机构及数据
  56. err = service.SysInit().CreateDataBase(ctx, req.DbName)
  57. if err != nil {
  58. return
  59. }
  60. res = new(system.DbInitCreateDbRes)
  61. *res = true
  62. return
  63. }