ssql: 新增核心网表逻辑功能接口

This commit is contained in:
TsMask
2025-08-21 17:30:52 +08:00
parent 79374ce2be
commit b55f27eb9b
6 changed files with 128 additions and 25 deletions

View File

@@ -0,0 +1,24 @@
--
-- Table structure for table `core_info`
--
DROP TABLE IF EXISTS `core_info`;
CREATE TABLE `core_info` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '核心网ID',
`core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网名称',
`sn` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网序列号',
`omc_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'OMC安装生成的唯一编码',
`time_zone` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '时区 Asia/Hong_Kong',
`longitude` float DEFAULT '0' COMMENT '经度 -180 to 180',
`latitude` float DEFAULT '0' COMMENT '纬度 -90 to 90',
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '地址',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '备注',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',
`create_time` bigint DEFAULT '0' COMMENT '创建时间',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
`update_time` bigint DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_core_name_sn` (`name`,`sn`) USING BTREE COMMENT '唯一名称和序号定义'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='核心网_基础信息表';
-- Dump completed on 2025-06-04 15:26:56

View File

@@ -15,14 +15,61 @@ import (
// 实例化控制层 CoreInfoController 结构体 // 实例化控制层 CoreInfoController 结构体
var NewCoreInfo = &CoreInfoController{ var NewCoreInfo = &CoreInfoController{
CoreInfoService: service.NewCoreInfo, coreInfoService: service.NewCoreInfo,
} }
// 核心网信息请求 // 核心网信息请求
// //
// PATH /core // PATH /core
type CoreInfoController struct { type CoreInfoController struct {
CoreInfoService *service.CoreInfo //核心网信息服务 coreInfoService *service.CoreInfo //核心网信息服务
}
// 核心网信息列表全部无分页
//
// GET /list/all
//
// @Tags core/info
// @Accept json
// @Produce json
// @Param coreUid query string true "CoreUID" default(8I73Y01Z)
// @Param name query string true "name" default(5AKF59BZ)
// @Param sn query string true "sn"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary The list of network element information is all unpaginated
// @Description The list of network element information is all unpaginated
// @Router /core/info/list/all [get]
func (s CoreInfoController) ListAll(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
var querys struct {
CoreUID string `form:"coreUid"` // 核心网唯一标识
Name string `form:"name"` // 名称
SN string `form:"sn"`
}
if err := c.ShouldBindQuery(&querys); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
return
}
// 查询实体参数
core := model.CoreInfo{}
if querys.CoreUID != "" {
core.CoreUID = querys.CoreUID
}
if querys.Name != "" {
core.Name = querys.Name
}
if querys.SN != "" {
core.SN = querys.SN
}
neList := s.coreInfoService.Find(core)
if len(neList) == 0 {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
c.JSON(200, resp.OkData(neList))
} }
// 核心网信息列表 // 核心网信息列表
@@ -30,7 +77,7 @@ type CoreInfoController struct {
// GET /list // GET /list
func (s CoreInfoController) List(c *gin.Context) { func (s CoreInfoController) List(c *gin.Context) {
query := reqctx.QueryMap(c) query := reqctx.QueryMap(c)
rows, total := s.CoreInfoService.FindByPage(query) rows, total := s.coreInfoService.FindByPage(query)
c.JSON(200, resp.OkData(map[string]any{"total": total, "rows": rows})) c.JSON(200, resp.OkData(map[string]any{"total": total, "rows": rows}))
} }
@@ -44,7 +91,7 @@ func (s CoreInfoController) Info(c *gin.Context) {
return return
} }
neHost := s.CoreInfoService.FindById(id) neHost := s.coreInfoService.FindById(id)
if neHost.ID != id { if neHost.ID != id {
c.JSON(200, resp.ErrMsg("not found data")) c.JSON(200, resp.ErrMsg("not found data"))
return return
@@ -65,14 +112,14 @@ func (s CoreInfoController) Add(c *gin.Context) {
} }
// 检查属性值唯一 // 检查属性值唯一
uniqueInfo := s.CoreInfoService.CheckUniqueGroupTitle(body.Name, body.SN, 0) uniqueInfo := s.coreInfoService.CheckUniqueGroupTitle(body.Name, body.SN, 0)
if !uniqueInfo { if !uniqueInfo {
c.JSON(200, resp.ErrMsg("name/SN already exists")) c.JSON(200, resp.ErrMsg("name/SN already exists"))
return return
} }
body.CreateBy = reqctx.LoginUserToUserName(c) body.CreateBy = reqctx.LoginUserToUserName(c)
insertId := s.CoreInfoService.Insert(body) insertId := s.coreInfoService.Insert(body)
if insertId > 0 { if insertId > 0 {
c.JSON(200, resp.Ok(nil)) c.JSON(200, resp.Ok(nil))
return return
@@ -92,14 +139,14 @@ func (s CoreInfoController) Edit(c *gin.Context) {
} }
// 检查属性值唯一 // 检查属性值唯一
uniqueHostCmd := s.CoreInfoService.CheckUniqueGroupTitle(body.Name, body.SN, body.ID) uniqueHostCmd := s.coreInfoService.CheckUniqueGroupTitle(body.Name, body.SN, body.ID)
if !uniqueHostCmd { if !uniqueHostCmd {
c.JSON(200, resp.ErrMsg("name/SN already exists")) c.JSON(200, resp.ErrMsg("name/SN already exists"))
return return
} }
// 检查是否存在 // 检查是否存在
coreInfo := s.CoreInfoService.FindById(body.ID) coreInfo := s.coreInfoService.FindById(body.ID)
if coreInfo.ID != body.ID { if coreInfo.ID != body.ID {
c.JSON(200, resp.ErrMsg("not found data")) c.JSON(200, resp.ErrMsg("not found data"))
return return
@@ -113,7 +160,7 @@ func (s CoreInfoController) Edit(c *gin.Context) {
coreInfo.Address = body.Address coreInfo.Address = body.Address
coreInfo.Remark = body.Remark coreInfo.Remark = body.Remark
body.UpdateBy = reqctx.LoginUserToUserName(c) body.UpdateBy = reqctx.LoginUserToUserName(c)
rows := s.CoreInfoService.Update(coreInfo) rows := s.coreInfoService.Update(coreInfo)
if rows > 0 { if rows > 0 {
c.JSON(200, resp.Ok(nil)) c.JSON(200, resp.Ok(nil))
return return
@@ -140,7 +187,7 @@ func (s CoreInfoController) Remove(c *gin.Context) {
ids = append(ids, parse.Number(v)) ids = append(ids, parse.Number(v))
} }
rows, err := s.CoreInfoService.DeleteByIds(ids) rows, err := s.coreInfoService.DeleteByIds(ids)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, err.Error()))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, err.Error())))
return return

View File

@@ -16,6 +16,10 @@ func Setup(router *gin.Engine) {
// 核心网信息 // 核心网信息
coreInfoGroup := router.Group("/core/info") coreInfoGroup := router.Group("/core/info")
{ {
coreInfoGroup.GET("/list/all",
middleware.AuthorizeUser(nil),
controller.NewCoreInfo.ListAll,
)
coreInfoGroup.GET("/list", coreInfoGroup.GET("/list",
middleware.AuthorizeUser(nil), middleware.AuthorizeUser(nil),
controller.NewCoreInfo.List, controller.NewCoreInfo.List,
@@ -37,7 +41,7 @@ func Setup(router *gin.Engine) {
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.coreInfo", collectlogs.BUSINESS_TYPE_UPDATE)), collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.coreInfo", collectlogs.BUSINESS_TYPE_UPDATE)),
controller.NewCoreInfo.Edit, controller.NewCoreInfo.Edit,
) )
coreInfoGroup.DELETE(":id", coreInfoGroup.DELETE("/:id",
middleware.AuthorizeUser(nil), middleware.AuthorizeUser(nil),
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.coreInfo", collectlogs.BUSINESS_TYPE_DELETE)), collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.coreInfo", collectlogs.BUSINESS_TYPE_DELETE)),
controller.NewCoreInfo.Remove, controller.NewCoreInfo.Remove,

View File

@@ -49,6 +49,29 @@ func (r CoreInfo) SelectByPage(query map[string]string) ([]model.CoreInfo, int64
return rows, total return rows, total
} }
// Select 查询集合
func (r CoreInfo) Select(param model.CoreInfo) []model.CoreInfo {
tx := db.DB("").Model(&model.CoreInfo{})
// 查询条件拼接
if param.CoreUID != "" {
tx = tx.Where("core_uid = ?", param.CoreUID)
}
if param.Name != "" {
tx = tx.Where("name = ?", param.Name)
}
if param.SN != "" {
tx = tx.Where("sn = ?", param.SN)
}
// 查询数据
rows := []model.CoreInfo{}
if err := tx.Order("id asc").Find(&rows).Error; err != nil {
logger.Errorf("query find err => %v", err.Error())
return rows
}
return rows
}
// SelectByIds 通过ID查询 // SelectByIds 通过ID查询
func (r CoreInfo) SelectByIds(ids []int64) []model.CoreInfo { func (r CoreInfo) SelectByIds(ids []int64) []model.CoreInfo {
rows := []model.CoreInfo{} rows := []model.CoreInfo{}

View File

@@ -12,17 +12,22 @@ import (
// 实例化服务层 CoreInfo 结构体 // 实例化服务层 CoreInfo 结构体
var NewCoreInfo = &CoreInfo{ var NewCoreInfo = &CoreInfo{
CoreInfoRepository: repository.NewCoreInfo, coreInfoRepository: repository.NewCoreInfo,
} }
// CoreInfo 核心网信息 服务层处理 // CoreInfo 核心网信息 服务层处理
type CoreInfo struct { type CoreInfo struct {
CoreInfoRepository *repository.CoreInfo // 核心网信息表 coreInfoRepository *repository.CoreInfo // 核心网信息表
} }
// FindByPage 分页查询列表数据 // FindByPage 分页查询列表数据
func (r CoreInfo) FindByPage(query map[string]string) ([]model.CoreInfo, int64) { func (r CoreInfo) FindByPage(query map[string]string) ([]model.CoreInfo, int64) {
return r.CoreInfoRepository.SelectByPage(query) return r.coreInfoRepository.SelectByPage(query)
}
// Find 查询列表
func (r CoreInfo) Find(core model.CoreInfo) []model.CoreInfo {
return r.coreInfoRepository.Select(core)
} }
// FindById 通过ID查询 // FindById 通过ID查询
@@ -30,9 +35,9 @@ func (r CoreInfo) FindById(id int64) model.CoreInfo {
if id <= 0 { if id <= 0 {
return model.CoreInfo{} return model.CoreInfo{}
} }
neHosts := r.CoreInfoRepository.SelectByIds([]int64{id}) rows := r.coreInfoRepository.SelectByIds([]int64{id})
if len(neHosts) > 0 { if len(rows) > 0 {
return neHosts[0] return rows[0]
} }
return model.CoreInfo{} return model.CoreInfo{}
} }
@@ -44,24 +49,24 @@ func (r CoreInfo) Insert(param model.CoreInfo) int64 {
param.OmcId = machine.Code param.OmcId = machine.Code
} }
return r.CoreInfoRepository.Insert(param) return r.coreInfoRepository.Insert(param)
} }
// Update 修改信息 // Update 修改信息
func (r CoreInfo) Update(param model.CoreInfo) int64 { func (r CoreInfo) Update(param model.CoreInfo) int64 {
return r.CoreInfoRepository.Update(param) return r.coreInfoRepository.Update(param)
} }
// DeleteByIds 批量删除信息 // DeleteByIds 批量删除信息
func (r CoreInfo) DeleteByIds(ids []int64) (int64, error) { func (r CoreInfo) DeleteByIds(ids []int64) (int64, error) {
// 检查是否存在 // 检查是否存在
rows := r.CoreInfoRepository.SelectByIds(ids) rows := r.coreInfoRepository.SelectByIds(ids)
if len(rows) <= 0 { if len(rows) <= 0 {
return 0, fmt.Errorf("coreInfo.noData") return 0, fmt.Errorf("coreInfo.noData")
} }
if len(rows) == len(ids) { if len(rows) == len(ids) {
rows := r.CoreInfoRepository.DeleteByIds(ids) rows := r.coreInfoRepository.DeleteByIds(ids)
return rows, nil return rows, nil
} }
// 删除信息失败! // 删除信息失败!
@@ -70,7 +75,7 @@ func (r CoreInfo) DeleteByIds(ids []int64) (int64, error) {
// CheckUniqueGroupTitle 校验唯一名称和序号 // CheckUniqueGroupTitle 校验唯一名称和序号
func (r CoreInfo) CheckUniqueGroupTitle(name, sn string, id int64) bool { func (r CoreInfo) CheckUniqueGroupTitle(name, sn string, id int64) bool {
uniqueId := r.CoreInfoRepository.CheckUnique(model.CoreInfo{ uniqueId := r.coreInfoRepository.CheckUnique(model.CoreInfo{
Name: name, Name: name,
SN: sn, SN: sn,
}) })

View File

@@ -128,9 +128,9 @@ func (r *NeConfig) FindById(id int64) model.NeConfig {
if id <= 0 { if id <= 0 {
return model.NeConfig{} return model.NeConfig{}
} }
neHosts := r.neConfigRepository.SelectByIds([]int64{id}) rows := r.neConfigRepository.SelectByIds([]int64{id})
if len(neHosts) > 0 { if len(rows) > 0 {
return neHosts[0] return rows[0]
} }
return model.NeConfig{} return model.NeConfig{}
} }