From a4459cd61b977fb9c020fd2563fdf40d7a807f8f Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 8 Sep 2023 11:15:11 +0800 Subject: [PATCH] =?UTF-8?q?UDM=20=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=A1=A5=E5=85=85=E8=AF=BB=E5=8F=96=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- features/udm_user/api_udm_user.go | 56 ++++++-- features/udm_user/model/udm_ausf_user.go | 12 -- features/udm_user/model/udm_auth_user.go | 13 ++ features/udm_user/model/udm_sd_user.go | 16 --- features/udm_user/model/udm_sub_user.go | 16 +++ features/udm_user/repo/repo_udm_auth_user.go | 102 ++++++++++++++ features/udm_user/repo/repo_udm_sub_user.go | 109 +++++++++++++++ features/udm_user/repo/repo_udm_user.go | 129 ------------------ ...vice_udm_user.go => service_redis_data.go} | 39 +++--- .../udm_user/service/service_udm_auth_user.go | 47 +++++++ .../udm_user/service/service_udm_sub_user.go | 49 +++++++ 11 files changed, 394 insertions(+), 194 deletions(-) delete mode 100644 features/udm_user/model/udm_ausf_user.go create mode 100644 features/udm_user/model/udm_auth_user.go delete mode 100644 features/udm_user/model/udm_sd_user.go create mode 100644 features/udm_user/model/udm_sub_user.go create mode 100644 features/udm_user/repo/repo_udm_auth_user.go create mode 100644 features/udm_user/repo/repo_udm_sub_user.go delete mode 100644 features/udm_user/repo/repo_udm_user.go rename features/udm_user/service/{service_udm_user.go => service_redis_data.go} (65%) create mode 100644 features/udm_user/service/service_udm_auth_user.go create mode 100644 features/udm_user/service/service_udm_sub_user.go diff --git a/features/udm_user/api_udm_user.go b/features/udm_user/api_udm_user.go index af3d55ef..7f113f98 100644 --- a/features/udm_user/api_udm_user.go +++ b/features/udm_user/api_udm_user.go @@ -14,20 +14,33 @@ import ( func Routers() []services.RouterItem { // 实例化控制层 SysDictTypeApi 结构体 var apis = &UdmUserApi{ - sysDictTypeService: *service.NewServiceUdmUser, + authUser: *service.NewServiceUdmAuthUser, + subUser: *service.NewServiceUdmSubUser, } rs := [...]services.RouterItem{ { Method: "GET", - Pattern: "/ausfList", - Handler: apis.AusfList, + Pattern: "/authUserList", + Handler: apis.UdmAuthUserList, + Middleware: nil, //midware.Authorize(nil), + }, + { + Method: "POST", + Pattern: "/authUserSave", + Handler: apis.UdmAuthUserSave, Middleware: nil, //midware.Authorize(nil), }, { Method: "GET", - Pattern: "/sdList", - Handler: apis.SdList, + Pattern: "/subUserList", + Handler: apis.UdmSubUserList, + Middleware: nil, //midware.Authorize(nil), + }, + { + Method: "POST", + Pattern: "/subUserSave", + Handler: apis.UdmSubUserSave, Middleware: nil, //midware.Authorize(nil), }, // 添加更多的 Router 对象... @@ -51,25 +64,40 @@ func Routers() []services.RouterItem { // // PATH /udmUserManage type UdmUserApi struct { - sysDictTypeService service.ServiceUdmUser + authUser service.ServiceUdmAuthUser + subUser service.ServiceUdmSubUser } // UDM鉴权用户 // -// GET /ausfList -func (s *UdmUserApi) AusfList(w http.ResponseWriter, r *http.Request) { - // querys := ctx.QueryMap(r) +// GET /authUserList +func (s *UdmUserApi) UdmAuthUserList(w http.ResponseWriter, r *http.Request) { + querys := ctx.QueryMap(r) + data := s.authUser.AuthUserList(querys) + ctx.JSON(w, 200, result.Ok(data)) +} - data := s.sysDictTypeService.ReadAusfList() +// UDM鉴权用户-获取全部保存数据库 +// +// POST /authUserSave +func (s *UdmUserApi) UdmAuthUserSave(w http.ResponseWriter, r *http.Request) { + data := s.authUser.AuthUserSave() ctx.JSON(w, 200, result.OkData(data)) } // UDM签约用户 // -// GET /sdList -func (s *UdmUserApi) SdList(w http.ResponseWriter, r *http.Request) { - // querys := ctx.QueryMap(r) +// GET /subUserList +func (s *UdmUserApi) UdmSubUserList(w http.ResponseWriter, r *http.Request) { + querys := ctx.QueryMap(r) + data := s.subUser.SubUserList(querys) + ctx.JSON(w, 200, result.Ok(data)) +} - data := s.sysDictTypeService.ReadSdList() +// UDM签约用户-获取全部保存数据库 +// +// POST /subUserSave +func (s *UdmUserApi) UdmSubUserSave(w http.ResponseWriter, r *http.Request) { + data := s.subUser.SubUserSave() ctx.JSON(w, 200, result.OkData(data)) } diff --git a/features/udm_user/model/udm_ausf_user.go b/features/udm_user/model/udm_ausf_user.go deleted file mode 100644 index 896272ad..00000000 --- a/features/udm_user/model/udm_ausf_user.go +++ /dev/null @@ -1,12 +0,0 @@ -package model - -// UdmAusfUser UDM鉴权用户 -type UdmAusfUser struct { - Phone string `json:"phone"` - Imsi string `json:"imssi"` - Amf string `json:"amf" binding:"required"` - Status string `json:"status" binding:"required"` - Ki string `json:"ki"` - AlgoIndex string `json:"algo_index"` - Opc string `json:"opc"` -} diff --git a/features/udm_user/model/udm_auth_user.go b/features/udm_user/model/udm_auth_user.go new file mode 100644 index 00000000..2a371421 --- /dev/null +++ b/features/udm_user/model/udm_auth_user.go @@ -0,0 +1,13 @@ +package model + +// UdmAuthUser UDM鉴权用户 +type UdmAuthUser struct { + ID string `json:"id" xorm:"pk 'id' autoincr"` + Msisdn string `json:"msisdn" xorm:"msisdn"` // 相当手机号 + Imsi string `json:"imsi" xorm:"imsi"` // SIM卡号 + Amf string `json:"amf" xorm:"amf"` // ANF + Status string `json:"status" xorm:"status"` // 状态 + Ki string `json:"ki" xorm:"ki"` // ki + AlgoIndex string `json:"algoIndex" xorm:"algo_index"` // + Opc string `json:"opc" xorm:"opc"` +} diff --git a/features/udm_user/model/udm_sd_user.go b/features/udm_user/model/udm_sd_user.go deleted file mode 100644 index 64000218..00000000 --- a/features/udm_user/model/udm_sd_user.go +++ /dev/null @@ -1,16 +0,0 @@ -package model - -// UdmSdUser UDM签约用户 -type UdmSdUser struct { - Phone string `json:"phone"` - Imsi string `json:"imssi"` - Msisdn string `json:"msisdn"` - SubUeAMBRTemp string `json:"subUeAMBRTemp" binding:"required"` - SubSNSSAITemp string `json:"subSNSSAITemp" binding:"required"` - Rai string `json:"rai"` - ForbiddenAreasTemp string `json:"forbiddenAreasTemp"` - ServiceAreaRestrictTemp string `json:"serviceAreaRestrictTemp"` - CnType string `json:"cnType"` - SubData string `json:"subData"` - Eps string `json:"eps"` -} diff --git a/features/udm_user/model/udm_sub_user.go b/features/udm_user/model/udm_sub_user.go new file mode 100644 index 00000000..81371ee6 --- /dev/null +++ b/features/udm_user/model/udm_sub_user.go @@ -0,0 +1,16 @@ +package model + +// UdmSubUser UDM签约用户 +type UdmSubUser struct { + ID string `json:"id" xorm:"pk 'id' autoincr"` + Msisdn string `json:"msisdn" xorm:"msisdn"` // 相当手机号 + Imsi string `json:"imsi" xorm:"imsi"` // SIM卡号 + SubUeAMBRTemp string `json:"subUeAMBRTemp" xorm:"sub_ue_ambr_temp"` + SubSNSSAITemp string `json:"subSNSSAITemp" xorm:"sub_snssai_temp"` + Rai string `json:"rai" xorm:"rai"` + ForbiddenAreasTemp string `json:"forbiddenAreasTemp" xorm:"forbidden_areas_temp"` + ServiceAreaRestrictTemp string `json:"serviceAreaRestrictTemp" xorm:"service_area_restrict_temp"` + CnType string `json:"cnType" xorm:"cn_type"` + SubData string `json:"subData" xorm:"sub_data"` + Eps string `json:"eps" xorm:"eps"` +} diff --git a/features/udm_user/repo/repo_udm_auth_user.go b/features/udm_user/repo/repo_udm_auth_user.go new file mode 100644 index 00000000..abc24344 --- /dev/null +++ b/features/udm_user/repo/repo_udm_auth_user.go @@ -0,0 +1,102 @@ +package repo + +import ( + "strings" + + "ems.agt/features/udm_user/model" + "ems.agt/lib/core/datasource" + "ems.agt/lib/core/utils/parse" + "ems.agt/lib/log" +) + +// 实例化数据层 RepoUdmAuthUser 结构体 +var NewRepoUdmAuthUser = &RepoUdmAuthUser{ + selectSql: `select + id, msisdn, imsi, amf, status, ki, algo_index, opc + from u_auth_user`, + + resultMap: map[string]string{ + "id": "ID", + "msisdn": "Msisdn", + "imsi": "Imsi", + "amf": "Amf", + "status": "Status", + "ki": "Ki", + "algo_index": "AlgoLndex", + "opc": "Opc", + }, +} + +// RepoUdmAuthUser UDM鉴权用户 数据层处理 +type RepoUdmAuthUser struct { + // 查询视图对象SQL + selectSql string + // 结果字段与实体映射 + resultMap map[string]string +} + +// convertResultRows 将结果记录转实体结果组 +func (r *RepoUdmAuthUser) convertResultRows(rows []map[string]any) []model.UdmAuthUser { + arr := make([]model.UdmAuthUser, 0) + for _, row := range rows { + UdmUser := model.UdmAuthUser{} + for key, value := range row { + if keyMapper, ok := r.resultMap[key]; ok { + datasource.SetFieldValue(&UdmUser, keyMapper, value) + } + } + arr = append(arr, UdmUser) + } + return arr +} + +// SelectPage 根据条件分页查询字典类型 +func (r *RepoUdmAuthUser) SelectPage(query map[string]any) map[string]any { + // 查询条件拼接 + var conditions []string + var params []any + if v, ok := query["msisdn"]; ok && v != "" { + conditions = append(conditions, "msisdn like concat(?, '%')") + params = append(params, v) + } + + // 构建查询条件语句 + whereSql := "" + if len(conditions) > 0 { + whereSql += " where " + strings.Join(conditions, " and ") + } + + // 查询数量 长度为0直接返回 + totalSql := "select count(1) as 'total' from u_auth_user" + totalRows, err := datasource.RawDB("", totalSql+whereSql, params) + if err != nil { + log.Errorf("total err => %v", err) + } + total := parse.Number(totalRows[0]["total"]) + if total == 0 { + return map[string]any{ + "total": total, + "rows": nil, + } + } + + // 分页 + pageNum, pageSize := datasource.PageNumSize(query["pageNum"], query["pageSize"]) + pageSql := " limit ?,? " + params = append(params, pageNum*pageSize) + params = append(params, pageSize) + + // 查询数据 + querySql := r.selectSql + whereSql + pageSql + results, err := datasource.RawDB("", querySql, params) + if err != nil { + log.Errorf("query err => %v", err) + } + + // 转换实体 + rows := r.convertResultRows(results) + return map[string]any{ + "total": total, + "rows": rows, + } +} diff --git a/features/udm_user/repo/repo_udm_sub_user.go b/features/udm_user/repo/repo_udm_sub_user.go new file mode 100644 index 00000000..f8db0995 --- /dev/null +++ b/features/udm_user/repo/repo_udm_sub_user.go @@ -0,0 +1,109 @@ +package repo + +import ( + "strings" + + "ems.agt/features/udm_user/model" + "ems.agt/lib/core/datasource" + "ems.agt/lib/core/utils/parse" + "ems.agt/lib/log" +) + +// 实例化数据层 RepoUdmSubUser 结构体 +var NewRepoUdmSubUser = &RepoUdmSubUser{ + selectSql: `select + id, msisdn, imsi, sub_ue_ambr_temp, sub_snssai_temp, rai, forbidden_areas_temp, service_area_restrict_temp, cn_type, sub_data, eps + from u_sub_user`, + + resultMap: map[string]string{ + "id": "ID", + "msisdn": "Msisdn", + "imsi": "Imsi", + "sub_ue_ambr_temp": "SubUeAMBRTemp", + "sub_snssai_temp": "subSNSSAITemp", + "rai": "Rai", + "forbidden_areas_temp": "ForbiddenAreasTemp", + "service_area_restrict_temp": "ServiceAreaRestrictTemp", + "cn_type": "CnType", + "sub_data": "SubData", + "eps": "Eps", + }, +} + +// RepoUdmSubUser UDM签约用户 数据层处理 +type RepoUdmSubUser struct { + // 查询视图对象SQL + selectSql string + // 结果字段与实体映射 + resultMap map[string]string +} + +// convertResultRows 将结果记录转实体结果组 +func (r *RepoUdmSubUser) convertResultRows(rows []map[string]any) []model.UdmSubUser { + arr := make([]model.UdmSubUser, 0) + for _, row := range rows { + UdmUser := model.UdmSubUser{} + for key, value := range row { + if keyMapper, ok := r.resultMap[key]; ok { + datasource.SetFieldValue(&UdmUser, keyMapper, value) + } + } + arr = append(arr, UdmUser) + } + return arr +} + +// SelectPage 根据条件分页查询字典类型 +func (r *RepoUdmSubUser) SelectPage(query map[string]any) map[string]any { + // 查询条件拼接 + var conditions []string + var params []any + if v, ok := query["msisdn"]; ok && v != "" { + conditions = append(conditions, "msisdn like concat(?, '%')") + params = append(params, v) + } + if v, ok := query["imsi"]; ok && v != "" { + conditions = append(conditions, "imsi like concat(?, '%')") + params = append(params, v) + } + + // 构建查询条件语句 + whereSql := "" + if len(conditions) > 0 { + whereSql += " where " + strings.Join(conditions, " and ") + } + + // 查询数量 长度为0直接返回 + totalSql := "select count(1) as 'total' from u_sub_user" + totalRows, err := datasource.RawDB("", totalSql+whereSql, params) + if err != nil { + log.Errorf("total err => %v", err) + } + total := parse.Number(totalRows[0]["total"]) + if total == 0 { + return map[string]any{ + "total": total, + "rows": nil, + } + } + + // 分页 + pageNum, pageSize := datasource.PageNumSize(query["pageNum"], query["pageSize"]) + pageSql := " limit ?,? " + params = append(params, pageNum*pageSize) + params = append(params, pageSize) + + // 查询数据 + querySql := r.selectSql + whereSql + pageSql + results, err := datasource.RawDB("", querySql, params) + if err != nil { + log.Errorf("query err => %v", err) + } + + // 转换实体 + rows := r.convertResultRows(results) + return map[string]any{ + "total": total, + "rows": rows, + } +} diff --git a/features/udm_user/repo/repo_udm_user.go b/features/udm_user/repo/repo_udm_user.go deleted file mode 100644 index cedf05b0..00000000 --- a/features/udm_user/repo/repo_udm_user.go +++ /dev/null @@ -1,129 +0,0 @@ -package repo - -import ( - "strings" - - "ems.agt/lib/core/datasource" - "ems.agt/lib/core/utils/date" - "ems.agt/lib/core/utils/parse" - "ems.agt/lib/log" -) - -// 实例化数据层 RepoUdmUser 结构体 -var NewRepoUdmUser = &RepoUdmUser{ - selectSql: `select - dict_id, dict_name, dict_type, status, create_by, create_time, remark - from sys_dict_type`, - - resultMap: map[string]string{ - "dict_id": "DictID", - "dict_name": "DictName", - "dict_type": "DictType", - "remark": "Remark", - "status": "Status", - "create_by": "CreateBy", - "create_time": "CreateTime", - "update_by": "UpdateBy", - "update_time": "UpdateTime", - }, -} - -// RepoUdmUser 字典类型表 数据层处理 -type RepoUdmUser struct { - // 查询视图对象SQL - selectSql string - // 结果字段与实体映射 - resultMap map[string]string -} - -// convertResultRows 将结果记录转实体结果组 -func (r *RepoUdmUser) convertResultRows(rows []map[string]any) []any { - arr := make([]any, 0) - for _, row := range rows { - UdmUser := []any{} - for key, value := range row { - if keyMapper, ok := r.resultMap[key]; ok { - datasource.SetFieldValue(&UdmUser, keyMapper, value) - } - } - arr = append(arr, UdmUser) - } - return arr -} - -// SelectDictTypePage 根据条件分页查询字典类型 -func (r *RepoUdmUser) SelectDictTypePage(query map[string]any) map[string]any { - // 查询条件拼接 - var conditions []string - var params []any - if v, ok := query["dictName"]; ok && v != "" { - conditions = append(conditions, "dict_name like concat(?, '%')") - params = append(params, v) - } - if v, ok := query["dictType"]; ok && v != "" { - conditions = append(conditions, "dict_type like concat(?, '%')") - params = append(params, v) - } - if v, ok := query["status"]; ok && v != "" { - conditions = append(conditions, "status = ?") - params = append(params, v) - } - beginTime, ok := query["beginTime"] - if !ok { - beginTime, ok = query["params[beginTime]"] - } - if ok && beginTime != "" { - conditions = append(conditions, "create_time >= ?") - beginDate := date.ParseStrToDate(beginTime.(string), date.YYYY_MM_DD) - params = append(params, beginDate.UnixMilli()) - } - endTime, ok := query["endTime"] - if !ok { - endTime, ok = query["params[endTime]"] - } - if ok && endTime != "" { - conditions = append(conditions, "create_time <= ?") - endDate := date.ParseStrToDate(endTime.(string), date.YYYY_MM_DD) - params = append(params, endDate.UnixMilli()) - } - - // 构建查询条件语句 - whereSql := "" - if len(conditions) > 0 { - whereSql += " where " + strings.Join(conditions, " and ") - } - - // 查询数量 长度为0直接返回 - totalSql := "select count(1) as 'total' from sys_dict_type" - totalRows, err := datasource.RawDB("", totalSql+whereSql, params) - if err != nil { - log.Errorf("total err => %v", err) - } - total := parse.Number(totalRows[0]["total"]) - if total == 0 { - return map[string]any{ - "total": total, - "rows": nil, - } - } - - // 分页 - pageNum, pageSize := datasource.PageNumSize(query["pageNum"], query["pageSize"]) - pageSql := " limit ?,? " - params = append(params, pageNum*pageSize) - params = append(params, pageSize) - - // 查询数据 - querySql := r.selectSql + whereSql + pageSql - results, err := datasource.RawDB("", querySql, params) - if err != nil { - log.Errorf("query err => %v", err) - } - - // 转换实体 - rows := r.convertResultRows(results) - return map[string]any{ - "total": total, - "rows": rows, - } -} diff --git a/features/udm_user/service/service_udm_user.go b/features/udm_user/service/service_redis_data.go similarity index 65% rename from features/udm_user/service/service_udm_user.go rename to features/udm_user/service/service_redis_data.go index 734e537f..0611b317 100644 --- a/features/udm_user/service/service_udm_user.go +++ b/features/udm_user/service/service_redis_data.go @@ -8,14 +8,8 @@ import ( "ems.agt/lib/core/redis" ) -// 实例化服务层 ServiceUdmUser 结构体 -var NewServiceUdmUser = &ServiceUdmUser{} - -// ServiceUdmUser UDM 服务层处理 -type ServiceUdmUser struct{} - // phoneImsiList 获取所有imsi -func (r *ServiceUdmUser) phoneImsiList() map[string]string { +func phoneImsiList() map[string]string { phoneKeys := redis.GetKeys("1*********") phoneAndImsiArr := make(map[string]string, 0) for _, phone := range phoneKeys { @@ -25,10 +19,10 @@ func (r *ServiceUdmUser) phoneImsiList() map[string]string { return phoneAndImsiArr } -// ReadAusfList UDM鉴权用户 -func (r *ServiceUdmUser) ReadAusfList() []model.UdmAusfUser { - phoneAndImsiArr := r.phoneImsiList() - user := []model.UdmAusfUser{} +// redisUdmAuthUserList UDM鉴权用户 +func redisUdmAuthUserList() []model.UdmAuthUser { + phoneAndImsiArr := phoneImsiList() + user := []model.UdmAuthUser{} for phone, imsi := range phoneAndImsiArr { key := fmt.Sprintf("ausf:%s", imsi) m := redis.GetHash(key) @@ -37,8 +31,8 @@ func (r *ServiceUdmUser) ReadAusfList() []model.UdmAusfUser { if _, ok := m["auth_success"]; ok { status = "1" } - a := model.UdmAusfUser{ - Phone: phone, + a := model.UdmAuthUser{ + Msisdn: phone, Imsi: imsi, Amf: m["amf"], Status: status, @@ -48,26 +42,27 @@ func (r *ServiceUdmUser) ReadAusfList() []model.UdmAusfUser { } user = append(user, a) } - - fmt.Println(len(user)) return user } -// ReadSdList UDM签约用户 -func (r *ServiceUdmUser) ReadSdList() []model.UdmSdUser { - phoneAndImsiArr := r.phoneImsiList() - user := []model.UdmSdUser{} +// redisUdmSubUserList UDM签约用户 +func redisUdmSubUserList() []model.UdmSubUser { + phoneAndImsiArr := phoneImsiList() + user := []model.UdmSubUser{} for phone, imsi := range phoneAndImsiArr { key := fmt.Sprintf("udm-sd:%s", imsi) m := redis.GetHash(key) - a := model.UdmSdUser{ - Phone: phone, + a := model.UdmSubUser{ Imsi: imsi, Msisdn: m["gpsi"], SubData: m["sm-dat"], } + if a.Msisdn == "" { + a.Msisdn = phone + } + if v, ok := m["am-dat"]; ok { arr := strings.Split(v, ",") a.SubUeAMBRTemp = arr[0] @@ -84,7 +79,5 @@ func (r *ServiceUdmUser) ReadSdList() []model.UdmSdUser { user = append(user, a) } - - fmt.Println(len(user)) return user } diff --git a/features/udm_user/service/service_udm_auth_user.go b/features/udm_user/service/service_udm_auth_user.go new file mode 100644 index 00000000..26968465 --- /dev/null +++ b/features/udm_user/service/service_udm_auth_user.go @@ -0,0 +1,47 @@ +package service + +import ( + "ems.agt/features/udm_user/repo" + "ems.agt/lib/core/datasource" + "ems.agt/lib/log" +) + +// 实例化服务层 ServiceUdmAuthUser 结构体 +var NewServiceUdmAuthUser = &ServiceUdmAuthUser{ + repoAuthUser: *repo.NewRepoUdmAuthUser, +} + +// ServiceUdmAuthUser UDM鉴权用户 服务层处理 +type ServiceUdmAuthUser struct { + repoAuthUser repo.RepoUdmAuthUser +} + +// AuthUserSave UDM鉴权用户-获取全部保存数据库 +func (r *ServiceUdmAuthUser) AuthUserSave() int64 { + var num int64 = 0 + authArr := redisUdmAuthUserList() + // 有数据才清空 + if len(authArr) == 0 { + return num + } + + _, err := datasource.ExecDB("", "TRUNCATE TABLE u_auth_user", nil) + if err != nil { + log.Errorf("TRUNCATE err => %v", err) + } + + for _, u := range authArr { + results, err := datasource.DefaultDB().Table("u_auth_user").Insert(u) + if err != nil { + log.Errorf("Insert err => %v", err) + return 0 + } + num += results + } + return num +} + +// SubUserSave UDM签约用户-分页查询数据库 +func (r *ServiceUdmAuthUser) AuthUserList(query map[string]any) map[string]any { + return r.repoAuthUser.SelectPage(query) +} diff --git a/features/udm_user/service/service_udm_sub_user.go b/features/udm_user/service/service_udm_sub_user.go new file mode 100644 index 00000000..660a3d44 --- /dev/null +++ b/features/udm_user/service/service_udm_sub_user.go @@ -0,0 +1,49 @@ +package service + +import ( + "ems.agt/features/udm_user/repo" + "ems.agt/lib/core/datasource" + "ems.agt/lib/log" +) + +// 实例化服务层 ServiceUdmSubUser 结构体 +var NewServiceUdmSubUser = &ServiceUdmSubUser{ + repoAuthUser: *repo.NewRepoUdmAuthUser, + repoSunUser: *repo.NewRepoUdmSubUser, +} + +// ServiceUdmSubUser UDM签约用户 服务层处理 +type ServiceUdmSubUser struct { + repoAuthUser repo.RepoUdmAuthUser + repoSunUser repo.RepoUdmSubUser +} + +// SubUserSave UDM签约用户-获取全部保存数据库 +func (r *ServiceUdmSubUser) SubUserSave() int64 { + var num int64 = 0 + subArr := redisUdmSubUserList() + // 有数据才清空 + if len(subArr) == 0 { + return num + } + + _, err := datasource.ExecDB("", "TRUNCATE TABLE u_sub_user", nil) + if err != nil { + log.Errorf("TRUNCATE err => %v", err) + } + + for _, u := range subArr { + results, err := datasource.DefaultDB().Table("u_sub_user").Insert(u) + if err != nil { + log.Errorf("Insert err => %v", err) + return 0 + } + num += results + } + return num +} + +// SubUserSave UDM签约用户-分页查询数据库 +func (r *ServiceUdmSubUser) SubUserList(query map[string]any) map[string]any { + return r.repoSunUser.SelectPage(query) +}