// 模块模型操作接口-公司 // 秒寻科技 // zt 2024-02-01 package companyapi import ( "errors" "ipsomc/core/company/companymodel" "ipsomc/core/dao/mysql/mysqlapi" "ipsomc/core/dao/mysql/mysqlmodel" "ipsomc/module/project/projectapi" "strconv" ) type CompanyApi struct { MySqlApi mysqlapi.MySqlApi ProjectApi projectapi.ProjectApi } // 查重 func (obj *CompanyApi) CheckCompany(dataModel *companymodel.Company) error { var count uint //查重 if err := obj.MySqlApi.GetDb().Model(dataModel).Where("name=?", dataModel.Name).Count(&count).Error; err != nil { return err } if count > 0 { return errors.New("该公司已注册") } return nil } // 新增基站基本参数 func (obj *CompanyApi) AddCompany(dataModel *companymodel.Company) error { var count int = 0 //查重 if err := obj.MySqlApi.GetDb().Model(dataModel).Where("name=?", dataModel.Name).Count(&count).Error; err != nil { return err } if count > 0 { return errors.New("新增错误,该公司已经存在") } //保存数据 if err := obj.MySqlApi.AddItem(dataModel); err != nil { return err } return nil } // 修改基站基本参数 func (obj *CompanyApi) UpdateCompany(dataModel *companymodel.Company, dataMap map[string]interface{}) error { var count int = 0 //查重 if err := obj.MySqlApi.GetDb().Model(dataModel).Where("id<>? and name=?", dataModel.ID, dataModel.Name).Count(&count).Error; err != nil { return err } if count > 0 { return errors.New("修改错误,该公司已经存在") } //保存数据 if err := obj.MySqlApi.UpdateItem(dataModel, dataMap); err != nil { return err } return nil } // 删除 func (obj *CompanyApi) DeleteCompany(dataModel *companymodel.Company) error { //检查该公司是否存在项目,存在项目则不能删除 count, err := obj.ProjectApi.GetCompanyProjectSum(dataModel.ID) if err != nil { return err } if count > 0 { return errors.New("该公司已创建 " + strconv.Itoa(count) + " 个项目,请先删除项目资料再删除公司资料") } //删除公司资料和管理员资源(包括系统管理员和项目管理员) if err := obj.MySqlApi.DeleteItem(dataModel); err != nil { return errors.New("删除记录失败") } return nil } // 查询一条公司记录 func (obj *CompanyApi) GetCompanyById(dataModel *companymodel.Company) error { if err := obj.MySqlApi.GetItemByID(dataModel); err != nil { return err } return nil } // 分页查询记录 func (obj *CompanyApi) GetCompanyPageList(dataModel *companymodel.Company, pageListParam *mysqlmodel.PageListParam, dataList interface{}) (mysqlmodel.PageListData, error) { pageListData, err := obj.MySqlApi.GetPageItemList(dataModel, pageListParam, dataList) if err != nil { return pageListData, err } return pageListData, nil }