companylogic.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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/util"
  13. "strconv"
  14. )
  15. type CompanyLgc struct {
  16. companyApi companyapi.CompanyApi
  17. userApi userapi.UserApi
  18. mySqlApi mysqlapi.MySqlApi
  19. }
  20. // 公司注册,包括注册系统管理员
  21. func (obj *CompanyLgc) CompanyRegister(dataModel *companymodel.Company) error {
  22. roleModel := new(usermodel.Role)
  23. //公司查重
  24. if err := obj.companyApi.CheckCompany(dataModel); err != nil {
  25. return err
  26. }
  27. //系统操作员查重
  28. if err := obj.userApi.CheckOperatorName(dataModel.UserName); err != nil {
  29. return err
  30. }
  31. //开启一个事务
  32. db := obj.mySqlApi.GetDb()
  33. tx := db.Begin()
  34. //新增公司资料
  35. if err := tx.Create(dataModel).Error; err != nil {
  36. tx.Rollback()
  37. return err
  38. }
  39. //查询系统管理员的角色ID
  40. if err := db.Model(roleModel).Where("type_id=?", 2).First(roleModel).Error; err != nil {
  41. tx.Rollback()
  42. return err
  43. }
  44. if roleModel.ID <= 0 { //角色不存在
  45. tx.Rollback()
  46. return errors.New("系统错误,请联系平台管理员")
  47. }
  48. //注册系统管理员
  49. var operatorModel usermodel.Operator
  50. operatorModel.Name = dataModel.ContactPerson
  51. operatorModel.Telephone = dataModel.ContactTel
  52. operatorModel.UserName = dataModel.UserName
  53. ciphertext, err := util.EncryptAes([]byte(dataModel.Password))
  54. if err != nil {
  55. tx.Rollback()
  56. return err
  57. }
  58. operatorModel.Password = ciphertext
  59. operatorModel.UserTypeID = 2 //系统管理员
  60. operatorModel.CompanyID = dataModel.ID
  61. operatorModel.Role = strconv.Itoa(int(roleModel.ID)) //为系统管理员分配角色
  62. if err := tx.Create(&operatorModel).Error; err != nil {
  63. tx.Rollback()
  64. return err
  65. }
  66. //修改系统管理员的OwnerID
  67. if err := tx.Model(operatorModel).Update("owner_id", operatorModel.ID).Error; err != nil {
  68. tx.Rollback()
  69. return err
  70. }
  71. //提交事务
  72. if err := tx.Commit().Error; err != nil {
  73. tx.Rollback()
  74. return errors.New("数据库操作失败")
  75. }
  76. return nil
  77. }