123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- // 模块模型操作接口-公司
- // 秒寻科技
- // zt 2024-02-01
- package companylogic
- import (
- "errors"
- "ipsomc/core/company/companyapi"
- "ipsomc/core/company/companymodel"
- "ipsomc/core/dao/mysql/mysqlapi"
- "ipsomc/core/user/userapi"
- "ipsomc/core/user/usermodel"
- "ipsomc/util"
- "strconv"
- )
- type CompanyLgc struct {
- companyApi companyapi.CompanyApi
- userApi userapi.UserApi
- mySqlApi mysqlapi.MySqlApi
- }
- // 公司注册,包括注册系统管理员
- func (obj *CompanyLgc) CompanyRegister(dataModel *companymodel.Company) error {
- roleModel := new(usermodel.Role)
- //公司查重
- if err := obj.companyApi.CheckCompany(dataModel); err != nil {
- return err
- }
- //系统操作员查重
- if err := obj.userApi.CheckOperatorName(dataModel.UserName); err != nil {
- return err
- }
- //开启一个事务
- db := obj.mySqlApi.GetDb()
- tx := db.Begin()
- //新增公司资料
- if err := tx.Create(dataModel).Error; err != nil {
- tx.Rollback()
- return err
- }
- //查询系统管理员的角色ID
- if err := db.Model(roleModel).Where("type_id=?", 2).First(roleModel).Error; err != nil {
- tx.Rollback()
- return err
- }
- if roleModel.ID <= 0 { //角色不存在
- tx.Rollback()
- return errors.New("系统错误,请联系平台管理员")
- }
- //注册系统管理员
- var operatorModel usermodel.Operator
- operatorModel.Name = dataModel.ContactPerson
- operatorModel.Telephone = dataModel.ContactTel
- operatorModel.UserName = dataModel.UserName
- ciphertext, err := util.EncryptAes([]byte(dataModel.Password))
- if err != nil {
- tx.Rollback()
- return err
- }
- operatorModel.Password = ciphertext
- operatorModel.UserTypeID = 2 //系统管理员
- operatorModel.CompanyID = dataModel.ID
- operatorModel.Role = strconv.Itoa(int(roleModel.ID)) //为系统管理员分配角色
- if err := tx.Create(&operatorModel).Error; err != nil {
- tx.Rollback()
- return err
- }
- //修改系统管理员的OwnerID
- if err := tx.Model(operatorModel).Update("owner_id", operatorModel.ID).Error; err != nil {
- tx.Rollback()
- return err
- }
- //提交事务
- if err := tx.Commit().Error; err != nil {
- tx.Rollback()
- return errors.New("数据库操作失败")
- }
- return nil
- }
|