feat 签约用户4G接口
This commit is contained in:
@@ -123,7 +123,19 @@ func Routers() []services.RouterItem {
|
|||||||
{
|
{
|
||||||
Method: "PUT",
|
Method: "PUT",
|
||||||
Pattern: "/sub/{neId}",
|
Pattern: "/sub/{neId}",
|
||||||
Handler: apis.UdmAuthUserEdit,
|
Handler: apis.UdmSubUserEdit,
|
||||||
|
Middleware: nil, //midware.Authorize(nil),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Method: "PUT",
|
||||||
|
Pattern: "/sub4gIP/{neId}",
|
||||||
|
Handler: apis.UdmSubUser4GIP,
|
||||||
|
Middleware: nil, //midware.Authorize(nil),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Method: "PUT",
|
||||||
|
Pattern: "/subSmData/{neId}",
|
||||||
|
Handler: apis.UdmSubUserSmData,
|
||||||
Middleware: nil, //midware.Authorize(nil),
|
Middleware: nil, //midware.Authorize(nil),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -706,6 +718,45 @@ func (s *UdmUserApi) UdmSubUserAdds(w http.ResponseWriter, r *http.Request) {
|
|||||||
ctx.JSON(w, 200, result.OkData(data))
|
ctx.JSON(w, 200, result.OkData(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UDM签约用户-批量添加4G用户
|
||||||
|
//
|
||||||
|
// POST /sub4G/{neId}
|
||||||
|
func (s *UdmUserApi) UdmSubUserAdd4G(w http.ResponseWriter, r *http.Request) {
|
||||||
|
neId := ctx.Param(r, "neId")
|
||||||
|
if neId == "" {
|
||||||
|
ctx.JSON(w, 400, result.CodeMsg(400, "参数错误"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var body model.UdmSubUser
|
||||||
|
err := ctx.ShouldBindJSON(r, &body)
|
||||||
|
if err != nil || body.Imsi == "" || body.SubNum == "" {
|
||||||
|
ctx.JSON(w, 400, result.CodeMsg(400, "参数错误"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
neInfo, err := NeInfoByUDM(neId)
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msg := fmt.Sprintf("bmd udmuser:start_imsi=%s,sub_num=%s,eps_flag=%s", body.Imsi, body.SubNum, body.EpsFlag)
|
||||||
|
|
||||||
|
// 发送MML
|
||||||
|
data, err := mmlclient.MMLSendMsgToString(neInfo.Ip, msg)
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 命令ok时
|
||||||
|
if strings.Contains(data, "ok") {
|
||||||
|
s.subUser.Insert4G(neInfo.NeId, body)
|
||||||
|
}
|
||||||
|
ctx.JSON(w, 200, result.OkData(data))
|
||||||
|
}
|
||||||
|
|
||||||
// UDM签约用户-修改
|
// UDM签约用户-修改
|
||||||
//
|
//
|
||||||
// PUT /{neId}
|
// PUT /{neId}
|
||||||
@@ -773,6 +824,83 @@ func (s *UdmUserApi) UdmSubUserEdit(w http.ResponseWriter, r *http.Request) {
|
|||||||
ctx.JSON(w, 200, result.OkData(data))
|
ctx.JSON(w, 200, result.OkData(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UDM签约用户-批量修改4G IP
|
||||||
|
//
|
||||||
|
// PUT /sub4gIP/{neId}
|
||||||
|
func (s *UdmUserApi) UdmSubUser4GIP(w http.ResponseWriter, r *http.Request) {
|
||||||
|
neId := ctx.Param(r, "neId")
|
||||||
|
if neId == "" {
|
||||||
|
ctx.JSON(w, 400, result.CodeMsg(400, "参数错误"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var body model.UdmSubUser
|
||||||
|
err := ctx.ShouldBindJSON(r, &body)
|
||||||
|
if err != nil || body.Imsi == "" || body.SubNum == "" || body.StaticIp == "" {
|
||||||
|
ctx.JSON(w, 400, result.CodeMsg(400, "参数错误"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
neInfo, err := NeInfoByUDM(neId)
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msg := fmt.Sprintf("bmd udmuser:start_imsi=%s,sub_num=%s,static_ip=%s", body.Imsi, body.SubNum, body.StaticIp)
|
||||||
|
|
||||||
|
// 发送MML
|
||||||
|
data, err := mmlclient.MMLSendMsgToString(neInfo.Ip, msg)
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 命令ok时
|
||||||
|
if strings.Contains(data, "ok") {
|
||||||
|
s.subUser.Update4GIP(neId, body)
|
||||||
|
}
|
||||||
|
ctx.JSON(w, 200, result.OkData(data))
|
||||||
|
}
|
||||||
|
|
||||||
|
// UDM签约用户-批量修改sm-data
|
||||||
|
//
|
||||||
|
// PUT /subSmData/{neId}
|
||||||
|
func (s *UdmUserApi) UdmSubUserSmData(w http.ResponseWriter, r *http.Request) {
|
||||||
|
neId := ctx.Param(r, "neId")
|
||||||
|
if neId == "" {
|
||||||
|
ctx.JSON(w, 400, result.CodeMsg(400, "参数错误"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var body model.UdmSubUser
|
||||||
|
err := ctx.ShouldBindJSON(r, &body)
|
||||||
|
if err != nil || body.Imsi == "" || body.SubNum == "" || body.SmData == "" {
|
||||||
|
ctx.JSON(w, 400, result.CodeMsg(400, "参数错误"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
neInfo, err := NeInfoByUDM(neId)
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3-000003&internet-10.10.1.1&ims-10.11.1.1
|
||||||
|
msg := fmt.Sprintf("bmd udmuser:start_imsi=%s,sub_num=%s,sm_data=%s", body.Imsi, body.SubNum, body.SmData)
|
||||||
|
|
||||||
|
// 发送MML
|
||||||
|
data, err := mmlclient.MMLSendMsgToString(neInfo.Ip, msg)
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 命令ok时
|
||||||
|
if strings.Contains(data, "ok") {
|
||||||
|
s.subUser.UpdateSmData(neId, body)
|
||||||
|
}
|
||||||
|
ctx.JSON(w, 200, result.OkData(data))
|
||||||
|
}
|
||||||
|
|
||||||
// UDM签约用户-删除
|
// UDM签约用户-删除
|
||||||
//
|
//
|
||||||
// DELETE /{neId}/{imsi}
|
// DELETE /{neId}/{imsi}
|
||||||
|
|||||||
@@ -24,4 +24,6 @@ type UdmSubUser struct {
|
|||||||
ContextId string `json:"contextId" xorm:"context_id"`
|
ContextId string `json:"contextId" xorm:"context_id"`
|
||||||
ApnContext string `json:"apnContext" xorm:"apn_context"`
|
ApnContext string `json:"apnContext" xorm:"apn_context"`
|
||||||
StaticIp string `json:"staticIp" xorm:"static_ip"`
|
StaticIp string `json:"staticIp" xorm:"static_ip"`
|
||||||
|
|
||||||
|
SubNum string `json:"subNum" xorm:"-"` // 批量数
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -209,6 +209,41 @@ func (r *RepoUdmSubUser) Inserts(neID string, subUser model.UdmSubUser, num stri
|
|||||||
for i := 0; i < numV; i++ {
|
for i := 0; i < numV; i++ {
|
||||||
subUser.Imsi = fmt.Sprint(imsiV + i)
|
subUser.Imsi = fmt.Sprint(imsiV + i)
|
||||||
subUser.Msisdn = fmt.Sprint(msisdnV + i)
|
subUser.Msisdn = fmt.Sprint(msisdnV + i)
|
||||||
|
// IP会自动递增
|
||||||
|
parts := strings.Split(subUser.StaticIp, ".")
|
||||||
|
lastPart := parts[3]
|
||||||
|
lastNum, _ := strconv.Atoi(lastPart)
|
||||||
|
lastNum += i
|
||||||
|
newLastPart := strconv.Itoa(lastNum)
|
||||||
|
parts[3] = newLastPart
|
||||||
|
newIP := strings.Join(parts, ".")
|
||||||
|
subUser.StaticIp = newIP
|
||||||
|
results, err := datasource.DefaultDB().Table("u_sub_user").Insert(subUser)
|
||||||
|
if err == nil {
|
||||||
|
insertNum += results
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return insertNum
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert4G 批量添加4G用户
|
||||||
|
func (r *RepoUdmSubUser) Insert4G(neID string, subUser model.UdmSubUser) int64 {
|
||||||
|
var insertNum int64
|
||||||
|
|
||||||
|
imsiV, err := strconv.Atoi(subUser.Imsi)
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
numV, err := strconv.Atoi(subUser.SubNum)
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
subUser.NeID = neID
|
||||||
|
for i := 0; i < numV; i++ {
|
||||||
|
subUser.Imsi = fmt.Sprint(imsiV + i)
|
||||||
|
|
||||||
results, err := datasource.DefaultDB().Table("u_sub_user").Insert(subUser)
|
results, err := datasource.DefaultDB().Table("u_sub_user").Insert(subUser)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
insertNum += results
|
insertNum += results
|
||||||
@@ -262,6 +297,78 @@ func (r *RepoUdmSubUser) Update(neID string, authUser model.UdmSubUser) int64 {
|
|||||||
return results
|
return results
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update4GIP 批量修改4G IP
|
||||||
|
func (r *RepoUdmSubUser) Update4GIP(neID string, subUser model.UdmSubUser) int64 {
|
||||||
|
var insertNum int64
|
||||||
|
|
||||||
|
imsiV, err := strconv.Atoi(subUser.Imsi)
|
||||||
|
if err != nil || subUser.StaticIp == "" {
|
||||||
|
return insertNum
|
||||||
|
}
|
||||||
|
numV, err := strconv.Atoi(subUser.SubNum)
|
||||||
|
if err != nil {
|
||||||
|
return insertNum
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < numV; i++ {
|
||||||
|
subUser.Imsi = fmt.Sprint(imsiV + i)
|
||||||
|
|
||||||
|
// 查询先
|
||||||
|
var user model.UdmSubUser
|
||||||
|
err := datasource.DefaultDB().Table("u_sub_user").Where("imsi = ? and ne_id = ?", subUser.Imsi, neID).Find(&user)
|
||||||
|
if err == nil {
|
||||||
|
// IP会自动递增
|
||||||
|
parts := strings.Split(subUser.StaticIp, ".")
|
||||||
|
lastPart := parts[3]
|
||||||
|
lastNum, _ := strconv.Atoi(lastPart)
|
||||||
|
lastNum += i
|
||||||
|
newLastPart := strconv.Itoa(lastNum)
|
||||||
|
parts[3] = newLastPart
|
||||||
|
newIP := strings.Join(parts, ".")
|
||||||
|
user.StaticIp = newIP
|
||||||
|
// 更新
|
||||||
|
results, err := datasource.DefaultDB().Table("u_sub_user").Update(user)
|
||||||
|
if err == nil {
|
||||||
|
insertNum += results
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return insertNum
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateSmData 批量修改sm-data
|
||||||
|
func (r *RepoUdmSubUser) UpdateSmData(neID string, subUser model.UdmSubUser) int64 {
|
||||||
|
var insertNum int64
|
||||||
|
|
||||||
|
imsiV, err := strconv.Atoi(subUser.Imsi)
|
||||||
|
if err != nil || subUser.StaticIp == "" {
|
||||||
|
return insertNum
|
||||||
|
}
|
||||||
|
numV, err := strconv.Atoi(subUser.SubNum)
|
||||||
|
if err != nil {
|
||||||
|
return insertNum
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < numV; i++ {
|
||||||
|
subUser.Imsi = fmt.Sprint(imsiV + i)
|
||||||
|
|
||||||
|
// 查询先
|
||||||
|
var user model.UdmSubUser
|
||||||
|
err := datasource.DefaultDB().Table("u_sub_user").Where("imsi = ? and ne_id = ?", subUser.Imsi, neID).Find(&user)
|
||||||
|
if err == nil {
|
||||||
|
// IP会自动递增,需提前规划好DNN对应的IP;如dnn不需要绑定IP则不带此字段名
|
||||||
|
// parts := strings.Split(subUser.SmData, "&")
|
||||||
|
user.SmData = subUser.SmData
|
||||||
|
// 更新
|
||||||
|
results, err := datasource.DefaultDB().Table("u_sub_user").Update(user)
|
||||||
|
if err == nil {
|
||||||
|
insertNum += results
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return insertNum
|
||||||
|
}
|
||||||
|
|
||||||
// Delete 删除实体
|
// Delete 删除实体
|
||||||
func (r *RepoUdmSubUser) Delete(neID, imsi string) int64 {
|
func (r *RepoUdmSubUser) Delete(neID, imsi string) int64 {
|
||||||
results, err := datasource.DefaultDB().Table("u_sub_user").Where("imsi = ? and ne_id = ?", imsi, neID).Delete()
|
results, err := datasource.DefaultDB().Table("u_sub_user").Where("imsi = ? and ne_id = ?", imsi, neID).Delete()
|
||||||
|
|||||||
@@ -91,11 +91,26 @@ func (r *ServiceUdmSubUser) InsertCSV(neID string, data []map[string]string) int
|
|||||||
return num
|
return num
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Insert UDM签约用户-批量添加4G用户
|
||||||
|
func (r *ServiceUdmSubUser) Insert4G(neID string, subUser model.UdmSubUser) int64 {
|
||||||
|
return r.repoSunUser.Insert4G(neID, subUser)
|
||||||
|
}
|
||||||
|
|
||||||
// Insert UDM签约用户-修改更新
|
// Insert UDM签约用户-修改更新
|
||||||
func (r *ServiceUdmSubUser) Update(neID string, subUser model.UdmSubUser) int64 {
|
func (r *ServiceUdmSubUser) Update(neID string, subUser model.UdmSubUser) int64 {
|
||||||
return r.repoSunUser.Update(neID, subUser)
|
return r.repoSunUser.Update(neID, subUser)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update4GIP UDM签约用户-批量修改4G IP
|
||||||
|
func (r *ServiceUdmSubUser) Update4GIP(neID string, subUser model.UdmSubUser) int64 {
|
||||||
|
return r.repoSunUser.Update4GIP(neID, subUser)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update4GIP UDM签约用户-批量修改sm-data
|
||||||
|
func (r *ServiceUdmSubUser) UpdateSmData(neID string, subUser model.UdmSubUser) int64 {
|
||||||
|
return r.repoSunUser.UpdateSmData(neID, subUser)
|
||||||
|
}
|
||||||
|
|
||||||
// Insert UDM签约用户-删除单个
|
// Insert UDM签约用户-删除单个
|
||||||
func (r *ServiceUdmSubUser) Delete(neID, imsi string) int64 {
|
func (r *ServiceUdmSubUser) Delete(neID, imsi string) int64 {
|
||||||
return r.repoSunUser.Delete(neID, imsi)
|
return r.repoSunUser.Delete(neID, imsi)
|
||||||
|
|||||||
Reference in New Issue
Block a user