123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- // 模块模型操作接口-公司
- // 秒寻科技
- // 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/module/bparam/bparamapi"
- "ipsomc/module/bparam/bparammodel"
- "ipsomc/module/project/projectmodel"
- "ipsomc/util"
- "strconv"
- )
- type CompanyLgc struct {
- companyApi companyapi.CompanyApi
- userApi userapi.UserApi
- mySqlApi mysqlapi.MySqlApi
- bparamApi bparamapi.BparamApi
- }
- // 公司注册,包括注册系统管理员
- 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
- }
- //修改公司记录归属owner_id,公司记录全部由平台管理员创建,所有公司记录的owner_id为平台管理员记录id(公司记录owner_id与记录id相同)
- if err := tx.Model(dataModel).Where("id=?", dataModel.ID).Update("owner_id", dataModel.OwnerID).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
- operatorModel.Nickname = dataModel.Nickname
- ciphertext, err := util.EncryptAes([]byte(dataModel.Password))
- if err != nil {
- tx.Rollback()
- return err
- }
- operatorModel.Password = ciphertext
- operatorModel.UserTypeID = 2 //1:平台管理员,2:系统管理员,3:项目管理员
- 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).Where("id=?", operatorModel.ID).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
- }
- // 删除公司资料,包括删除公司系统管理员、项目资料和项目管理员
- func (obj *CompanyLgc) DeleteCompanyLgc(dataModel *companymodel.Company) error {
- //开启事务
- tx := obj.mySqlApi.GetDb().Begin()
- //删除公司的所有基站
- if err := tx.Delete(&bparammodel.BtsBaseParam{}, "company_id=?", dataModel.ID).Error; err != nil {
- tx.Rollback()
- return err
- }
- //删除该公司的所有项目
- if err := tx.Delete(&projectmodel.Project{}, "company_id=?", dataModel.ID).Error; err != nil {
- tx.Rollback()
- return err
- }
- //删除该公司的所有管理员
- if err := tx.Delete(&usermodel.Operator{}, "company_id=?", dataModel.ID).Error; err != nil {
- tx.Rollback()
- return err
- }
- //删除该公司资料
- if err := tx.Delete(&companymodel.Company{}, "id=?", dataModel.ID).Error; err != nil {
- tx.Rollback()
- return err
- }
- //提交事务
- if err := tx.Commit().Error; err != nil {
- tx.Rollback()
- return err
- }
- return nil
- }
|