companylogic.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. // 模块模型操作接口-公司
  2. // 秒寻科技
  3. // zt 2024-02-01
  4. package companylogic
  5. import (
  6. "errors"
  7. "ipsomc/core/company/companyapi"
  8. "ipsomc/core/company/companymodel"
  9. "ipsomc/core/dao/mysql/mysqlapi"
  10. "ipsomc/core/user/userapi"
  11. "ipsomc/core/user/usermodel"
  12. "ipsomc/module/bparam/bparamapi"
  13. "ipsomc/module/bparam/bparammodel"
  14. "ipsomc/module/project/projectmodel"
  15. "ipsomc/util"
  16. "strconv"
  17. )
  18. type CompanyLgc struct {
  19. companyApi companyapi.CompanyApi
  20. userApi userapi.UserApi
  21. mySqlApi mysqlapi.MySqlApi
  22. bparamApi bparamapi.BparamApi
  23. }
  24. // 公司注册,包括注册系统管理员
  25. func (obj *CompanyLgc) CompanyRegister(dataModel *companymodel.Company) error {
  26. roleModel := new(usermodel.Role)
  27. //公司查重
  28. if err := obj.companyApi.CheckCompany(dataModel); err != nil {
  29. return err
  30. }
  31. //系统操作员查重
  32. if err := obj.userApi.CheckOperatorName(dataModel.UserName); err != nil {
  33. return err
  34. }
  35. //开启一个事务
  36. db := obj.mySqlApi.GetDb()
  37. tx := db.Begin()
  38. //新增公司资料
  39. if err := tx.Create(dataModel).Error; err != nil {
  40. tx.Rollback()
  41. return err
  42. }
  43. //修改公司记录归属owner_id,公司记录全部由平台管理员创建,所有公司记录的owner_id为平台管理员记录id(公司记录owner_id与记录id相同)
  44. if err := tx.Model(dataModel).Where("id=?", dataModel.ID).Update("owner_id", dataModel.OwnerID).Error; err != nil {
  45. tx.Rollback()
  46. return err
  47. }
  48. //查询系统管理员的角色ID
  49. if err := db.Model(roleModel).Where("type_id=?", 2).First(roleModel).Error; err != nil {
  50. tx.Rollback()
  51. return err
  52. }
  53. if roleModel.ID <= 0 { //角色不存在
  54. tx.Rollback()
  55. return errors.New("系统错误,请联系平台管理员")
  56. }
  57. //注册系统管理员
  58. var operatorModel usermodel.Operator
  59. operatorModel.Name = dataModel.ContactPerson
  60. operatorModel.Telephone = dataModel.ContactTel
  61. operatorModel.UserName = dataModel.UserName
  62. operatorModel.Nickname = dataModel.Nickname
  63. ciphertext, err := util.EncryptAes([]byte(dataModel.Password))
  64. if err != nil {
  65. tx.Rollback()
  66. return err
  67. }
  68. operatorModel.Password = ciphertext
  69. operatorModel.UserTypeID = 2 //1:平台管理员,2:系统管理员,3:项目管理员
  70. operatorModel.CompanyID = dataModel.ID
  71. operatorModel.Role = strconv.Itoa(int(roleModel.ID)) //为系统管理员分配角色
  72. if err := tx.Create(&operatorModel).Error; err != nil {
  73. tx.Rollback()
  74. return err
  75. }
  76. //修改系统管理员的OwnerID
  77. if err := tx.Model(operatorModel).Where("id=?", operatorModel.ID).Update("owner_id", operatorModel.ID).Error; err != nil {
  78. tx.Rollback()
  79. return err
  80. }
  81. //提交事务
  82. if err := tx.Commit().Error; err != nil {
  83. tx.Rollback()
  84. return errors.New("数据库操作失败")
  85. }
  86. return nil
  87. }
  88. // 删除公司资料,包括删除公司系统管理员、项目资料和项目管理员
  89. func (obj *CompanyLgc) DeleteCompanyLgc(dataModel *companymodel.Company) error {
  90. //开启事务
  91. tx := obj.mySqlApi.GetDb().Begin()
  92. //删除公司的所有基站
  93. if err := tx.Delete(&bparammodel.BtsBaseParam{}, "company_id=?", dataModel.ID).Error; err != nil {
  94. tx.Rollback()
  95. return err
  96. }
  97. //删除该公司的所有项目
  98. if err := tx.Delete(&projectmodel.Project{}, "company_id=?", dataModel.ID).Error; err != nil {
  99. tx.Rollback()
  100. return err
  101. }
  102. //删除该公司的所有管理员
  103. if err := tx.Delete(&usermodel.Operator{}, "company_id=?", dataModel.ID).Error; err != nil {
  104. tx.Rollback()
  105. return err
  106. }
  107. //删除该公司资料
  108. if err := tx.Delete(&companymodel.Company{}, "id=?", dataModel.ID).Error; err != nil {
  109. tx.Rollback()
  110. return err
  111. }
  112. //提交事务
  113. if err := tx.Commit().Error; err != nil {
  114. tx.Rollback()
  115. return err
  116. }
  117. return nil
  118. }