From ffeaaed7e1fce86e90f2f141d6f45c9e1f99399d Mon Sep 17 00:00:00 2001 From: yangduo Date: Sat, 17 Aug 2024 13:23:41 +0800 Subject: [PATCH] super whitelist --- server/adminserver/api/v1/system/whitelist.go | 164 ++++++++++++++++++ server/adminserver/model/system/whitelist.go | 11 ++ server/adminserver/router/system/whitelist.go | 7 + 3 files changed, 182 insertions(+) diff --git a/server/adminserver/api/v1/system/whitelist.go b/server/adminserver/api/v1/system/whitelist.go index 8f21508e..890a08ee 100644 --- a/server/adminserver/api/v1/system/whitelist.go +++ b/server/adminserver/api/v1/system/whitelist.go @@ -283,3 +283,167 @@ func (bpa *WhiteListApi) UploadExcel(c *gin.Context) { "message": "添加成功", }) } + +func (bpa *WhiteListApi) ListSuper(c *gin.Context) { + req := struct { + PageDto system.PageDto `json:"page_dto"` + }{} + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": err.Error(), + }) + return + } + sql := "SELECT * FROM t_super_whitelist WHERE 1=1" + params := []string{} + result := []system.SuperWhiteListItem{} + f5.GetGoStyleDb().PageQuery( + constant.CONF_DB, + q5.ToInt32(req.PageDto.PageSize), + q5.ToInt32(req.PageDto.Page), + sql, + params, + f5.GetDbFilter().Comp([]f5.DbQueryFilter{}...), + "", + func(err error, pg *f5.Pagination) { + if err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": err.Error(), + }) + return + } + + for pg.Rows.Next() { + p := q5.NewSliceElement(&result) + (*p).Identity = pg.Rows.GetByName("user_identity") + (*p).Enable = q5.SafeToInt32(pg.Rows.GetByName("enable")) + (*p).CreateTime = q5.SafeToInt32(pg.Rows.GetByName("createtime")) + (*p).ModifyTime = q5.SafeToInt32(pg.Rows.GetByName("modifytime")) + } + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "message": "获取成功", + "data": result, + "total": pg.Total, + "total_page": pg.TotalPages, + "cur_page": pg.CurrentPage, + }) + }) +} + +func (bpa *WhiteListApi) AddSuper(c *gin.Context) { + req := struct { + Identity string `binding:"required" json:"user_identity"` + Enable int32 `json:"enable"` + }{} + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": err.Error(), + }) + return + } + + if req.Identity == "" || req.Enable < 0 || req.Enable > 1 { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": "", + }) + return + } + + info := new(system.SuperWhiteListItem) + + var count int64 = 0 + db := f5.GetApp().GetOrmDb(constant.CONF_DB).Table(info.TableName()).Where("user_identity = ?", req.Identity) + err := db.Count(&count).Error + if err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": "系统繁忙", + }) + return + } else if count > 0 { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": "数据存在", + }) + return + } + + info.Identity = req.Identity + info.Enable = req.Enable + nowDaySeconds := int32(f5.GetApp().GetRealSeconds()) + info.CreateTime = nowDaySeconds + info.ModifyTime = nowDaySeconds + if err := f5.GetApp().GetOrmDb(constant.CONF_DB).Create(info).Error; err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": err.Error(), + }) + return + } + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "message": "添加成功", + }) +} + +func (bpa *WhiteListApi) EditSuper(c *gin.Context) { + req := struct { + Identity string `binding:"required" json:"user_identity"` + Enable int32 `json:"enable"` + }{} + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": err.Error(), + }) + return + } + + if req.Identity == "" || req.Enable < 0 || req.Enable > 1 { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": "", + }) + return + } + + item := new(system.SuperWhiteListItem) + db := f5.GetApp().GetOrmDb(constant.CONF_DB) + if err := db.Take(item, "user_identity = ?", req.Identity).Error; err != nil { + if !f5.IsOrmErrRecordNotFound(err) { + c.JSON(http.StatusOK, gin.H{ + "code": 500, + "message": "sever internal error:" + err.Error(), + }) + return + } else { + c.JSON(http.StatusOK, gin.H{ + "code": 2, + "message": "无法查到记录", + }) + return + } + } + + if item.Enable != req.Enable { + item.Enable = req.Enable + item.ModifyTime = int32(f5.GetApp().GetRealSeconds()) + if err := db.Where("user_identity = ?", req.Identity).Save(item).Error; err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 500, + "message": "sever internal error:" + err.Error(), + }) + return + } + } + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "message": "", + }) +} diff --git a/server/adminserver/model/system/whitelist.go b/server/adminserver/model/system/whitelist.go index dad8ebd8..fb528b1e 100644 --- a/server/adminserver/model/system/whitelist.go +++ b/server/adminserver/model/system/whitelist.go @@ -11,3 +11,14 @@ type WhiteListItem struct { func (WhiteListItem) TableName() string { return "t_whitelist" } + +type SuperWhiteListItem struct { + Identity string `gorm:"column:user_identity" json:"user_identity"` + Enable int32 `gorm:"column:enable" json:"enable"` + CreateTime int32 `gorm:"column:createtime" json:"createtime"` + ModifyTime int32 `gorm:"column:modifytime" json:"modifytime"` +} + +func (SuperWhiteListItem) TableName() string { + return "t_super_whitelist" +} diff --git a/server/adminserver/router/system/whitelist.go b/server/adminserver/router/system/whitelist.go index b41f3983..731008f3 100644 --- a/server/adminserver/router/system/whitelist.go +++ b/server/adminserver/router/system/whitelist.go @@ -20,4 +20,11 @@ func (this *WhiteListRoute) InitWhiteListRouter(priRouter *gin.RouterGroup) { group.POST("list", middleware.Permission("api/v1/white_list/list", api.List)) group.POST("uploadExcel", middleware.Permission("api/v1/white_list/uploadExcel", api.UploadExcel)) } + + { + supergroup := priRouter.Group("super_whitelist") + supergroup.POST("add", middleware.Permission("api/v1/super_whitelist/add", api.AddSuper)) + supergroup.POST("list", middleware.Permission("api/v1/super_whitelist/list", api.ListSuper)) + supergroup.POST("edit", middleware.Permission("api/v1/super_whitelist/edit", api.EditSuper)) + } }