123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- // 模块模型操作接口-基站参数,包括基本参数和位置参数
- // 秒寻科技
- // zt 2024-02-15
- package bparamapi
- import (
- "errors"
- "ipsomc/core/dao/mysql/mysqlapi"
- "ipsomc/core/dao/mysql/mysqlmodel"
- "ipsomc/module/bparam/bparammodel"
- "ipsomc/module/project/projectmodel"
- "ipsomc/public"
- "github.com/jinzhu/gorm"
- )
- type BparamApi struct {
- MySqlApi mysqlapi.MySqlApi
- }
- // 增加基站基本参数
- func (obj *BparamApi) AddBtsBaseParam(dataModel *bparammodel.BtsBaseParam) error {
- btsBaseModel := new(bparammodel.BtsBaseParam)
- projectModel := new(projectmodel.Project) //项目模型
- //基于项目ID,补充公司ID
- if dataModel.SourceID == 3 { //申请来源于GUI网管
- companyId, err := obj.GuiGetCompanyIdByProjectId(dataModel) //基于项目ID获得公司ID
- if err != nil {
- return err
- } else {
- dataModel.CompanyID = companyId //补充公司ID
- }
- }
- //查重
- if err := obj.MySqlApi.GetDb().Model(btsBaseModel).Where("company_id=? and project_id=? and bts_id=?", dataModel.CompanyID, dataModel.ProjectID, dataModel.BtsID).First(btsBaseModel).Error; err != nil {
- if err != gorm.ErrRecordNotFound {
- return err
- }
- }
- //该记录已经存在,则修改记录
- if btsBaseModel.ID > 0 {
- dataModel.ID = btsBaseModel.ID
- if err := obj.MySqlApi.GetDb().Model(btsBaseModel).Updates(map[string]interface{}{"carrier_id": dataModel.CarrierID, "timeslot": dataModel.Timeslot}).Where("id=?", dataModel.ID).Error; err != nil {
- return err
- }
- } else { //该记录还不存在,则心在记录
- ////判断该记录是否合法,即项目ID是否存在,该项目下属基站是否已经超过最大规模数
- //判断项目ID是否存在
- if err := obj.MySqlApi.GetDb().Model(projectModel).Where("project_id=?", dataModel.ProjectID).First(projectModel).Error; err != nil {
- if err != gorm.ErrRecordNotFound {
- return err
- }
- }
- //项目ID不存在
- if projectModel.ID <= 0 {
- return errors.New("该项目编号不存在,请与系统管理员联系")
- } else { //项目ID存在
- //新增记录
- if err := obj.MySqlApi.AddItem(dataModel); err != nil {
- return err
- }
- }
- }
- return nil
- }
- // 修改基站基本参数
- func (obj *BparamApi) UpdateBtsBaseParam(dataModel *bparammodel.BtsBaseParam, dataMap map[string]interface{}) error {
- var count int = 0
- //查重
- if err := obj.MySqlApi.GetDb().Model(dataModel).Where("id<>? and company_id=? and project_id=? and bts_id=?", dataModel.ID, dataModel.CompanyID, dataModel.ProjectID, dataModel.BtsID).Count(&count).Error; err != nil {
- return err
- }
- if count > 0 {
- return errors.New("该基站记录已经存在")
- }
- //修改
- delete(dataMap, "project_id")
- //delete(dataMap, "bts_id")
- if err := obj.MySqlApi.UpdateItem(dataModel, dataMap); err != nil {
- return errors.New("数据库操作失败")
- }
- return nil
- }
- // 更新基站在线状态
- // heartMap:心跳map
- func (obj *BparamApi) UpdateBtsStatusByHeartMap(heartMap map[string]public.HeartMapValue) error {
- modeBaseParam := new(bparammodel.BtsBaseParam)
- var dataList [][]interface{} //基站数据队列
- //开启事务
- tx := obj.MySqlApi.GetDb().Begin()
- //将所有项目的基站的状态修改为离线
- if err := tx.Model(modeBaseParam).Update("status", 1).Error; err != nil {
- tx.Rollback()
- return err
- }
- //map不为空
- if len(heartMap) > 0 {
- //组织基站信息
- for _, v := range heartMap {
- dataList = append(dataList, []interface{}{v.ProjectID, v.BtsID})
- }
- //修改基站状态
- if err := tx.Model(modeBaseParam).Where("(project_id, bts_id) in (?)", dataList).Update("status", 2).Error; err != nil {
- tx.Rollback()
- return err
- }
- }
- //提交事务
- if err := tx.Commit().Error; err != nil {
- tx.Rollback()
- return err
- }
- //清空心跳map
- public.PublicHeartMapDeleteAllItem()
- return nil
- }
- // 删除基站基本参数
- func (obj *BparamApi) DeleteBtsBaseParam(dataModel *bparammodel.BtsBaseParam) error {
- if err := obj.MySqlApi.DeleteItem(dataModel); err != nil {
- return errors.New("删除记录失败")
- }
- return nil
- }
- // 查询基站基本参数单条记录
- func (obj *BparamApi) GetBtsBaseParamById(dataModel *bparammodel.BtsBaseParam) error {
- if err := obj.MySqlApi.GetItemByID(dataModel); err != nil {
- return errors.New("查询记录失败")
- }
- return nil
- }
- // 查询基站基本参数记录(满足条件的全部记录)
- func (obj *BparamApi) GetBtsBaseParamList(dataModel *bparammodel.BtsBaseParam, listParam *mysqlmodel.ListParam, dataList interface{}) error {
- if err := obj.MySqlApi.GetItemList(dataModel, listParam, dataList); err != nil {
- return err
- }
- return nil
- }
- // 分页查询基站基本参数记录
- func (obj *BparamApi) GetBtsBaseParamPageList(dataModel *bparammodel.BtsBaseParam, 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
- }
- // 基于项目ID获得公司ID
- func (obj *BparamApi) GuiGetCompanyIdByProjectId(dataModel *bparammodel.BtsBaseParam) (int, error) {
- modelProject := new(projectmodel.Project) //项目模型
- var companyId int = 0
- //获得公司信息
- if err := obj.MySqlApi.GetDb().Model(modelProject).Where("project_id=?", dataModel.ProjectID).First(modelProject).Error; err != nil {
- return companyId, err
- }
- if modelProject.CompanyID <= 0 {
- return companyId, errors.New("未找到与项目匹配的公司资料")
- }
- return modelProject.CompanyID, nil
- }
- // 基于项目ID和基站ID查询记录ID
- func (obj *BparamApi) GetRecordIdByProjectIdAndBtsId(dataModel *bparammodel.BtsBaseParam) error {
- modelBtsBaseParam := new(bparammodel.BtsBaseParam) //项目模型
- //获得公司信息
- if err := obj.MySqlApi.GetDb().Model(modelBtsBaseParam).Where("project_id=? and bts_id=?", dataModel.ProjectID, dataModel.BtsID).First(modelBtsBaseParam).Error; err != nil {
- return err
- }
- dataModel.ID = modelBtsBaseParam.ID
- return nil
- }
- // 基于项目ID和公司ID检查基站参数记录是否已经存在
- func (obj *BparamApi) GuiCheckBparamRecordIsExist(dataModel *bparammodel.BtsBaseParam) (int, error) {
- modelTmp := new(bparammodel.BtsBaseParam)
- //查询基站参数
- if err := obj.MySqlApi.GetDb().Model(modelTmp).Where("company_id=? and project_id=?", dataModel.CompanyID, dataModel.ProjectID).First(modelTmp).Error; err != nil {
- return modelTmp.ID, err
- }
- if modelTmp.ID <= 0 { //记录不存在
- return modelTmp.ID, nil
- }
- dataModel.ID = modelTmp.ID
- return modelTmp.ID, nil //记录存在
- }
- // 修改
- func (obj *BparamApi) GuiUpdateBaseParam(dataModel *bparammodel.BtsBaseParam, dataMap map[string]interface{}) error {
- if err := obj.MySqlApi.UpdateItem(dataModel, dataMap); err != nil {
- return errors.New("数据库操作失败")
- }
- return nil
- }
- // 移动端查询基站参数
- func (obj *BparamApi) GetMobileBtsParamList(dataModel *bparammodel.BtsBaseParam) ([]bparammodel.MobileBtsParam, error) {
- tempModel := new(bparammodel.BtsBaseParam)
- dataList := []bparammodel.MobileBtsParam{}
- db := obj.MySqlApi.GetDb()
- if err := db.Model(tempModel).Where("project_id=? and enable_flag=1", dataModel.ProjectID).Scan(&dataList).Error; err != nil {
- return dataList, err
- }
- return dataList, nil
- }
|