初始化项目文件
This commit is contained in:
25
api_iris/service/admin/init.go
Normal file
25
api_iris/service/admin/init.go
Normal file
@ -0,0 +1,25 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/kataras/iris/v12"
|
||||
"main/utils"
|
||||
)
|
||||
|
||||
func Admin(ctx iris.Context) {
|
||||
err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", "adminPage"))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// CheckAdmin 检查admin权限
|
||||
func checkAdmin(ctx iris.Context) {
|
||||
user := utils.GetLoginUser(ctx)
|
||||
if user.Type != "admin" {
|
||||
ctx.StatusCode(iris.StatusForbidden)
|
||||
ctx.SetErr(errors.New("权限不足"))
|
||||
return
|
||||
}
|
||||
ctx.Next()
|
||||
}
|
199
api_iris/service/admin/logs.go
Normal file
199
api_iris/service/admin/logs.go
Normal file
@ -0,0 +1,199 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/kataras/iris/v12"
|
||||
"github.com/sirupsen/logrus"
|
||||
"gorm.io/gorm"
|
||||
"main/config"
|
||||
"main/database"
|
||||
"main/model"
|
||||
"main/utils"
|
||||
"os"
|
||||
"path"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
var ipLocationList []model.IpsLocation
|
||||
|
||||
func getLogStats(ctx iris.Context) {
|
||||
var logStats []resLogStats
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
if err := db.Model(&model.Logs{}).Select("left(time, 10) name", "count(1) value").Order("left(time,10)").Group("left(time,10)").Scan(&logStats).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
}
|
||||
err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", logStats))
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func getLogDetail(ctx iris.Context) {
|
||||
var logs []model.Logs
|
||||
date := ctx.URLParam("date")
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
if err := db.Where("left(time,10) = ?", date).Find(&logs).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
}
|
||||
err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", logs))
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func getSysLogs(ctx iris.Context) {
|
||||
var logs []model.SysLogs
|
||||
var resLogs []model.SysLogs
|
||||
startTime := ctx.URLParam("start_time")
|
||||
endTime := ctx.URLParam("end_time")
|
||||
containerName := ctx.URLParam("container_name")
|
||||
message := ctx.URLParam("message")
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
//生成子查询
|
||||
query := db.Model(&model.SysLogs{})
|
||||
if startTime == "" {
|
||||
startTime = time.Date(2000, 0, 1, 0, 0, 0, 0, time.Local).Format("2006-01-02 15:04:05")
|
||||
}
|
||||
if endTime == "" {
|
||||
endTime = time.Now().Format("2006-01-02 15:04:05")
|
||||
}
|
||||
query.Where("time >= ? and time <= ?", startTime, endTime)
|
||||
if containerName != "" {
|
||||
query.Where("container_name = ?", containerName)
|
||||
}
|
||||
//查询,限制1000条日志
|
||||
if err := query.Order("time desc").Limit(1000).Find(&logs).Error; err != nil {
|
||||
ctx.StatusCode(iris.StatusInternalServerError)
|
||||
ctx.SetErr(errors.New("系统错误,请联系管理员"))
|
||||
logrus.Errorln("查询容器日志sql失败:", err, "查询参数:", startTime, endTime, containerName)
|
||||
return
|
||||
}
|
||||
//过滤包含message内容
|
||||
if message != "" {
|
||||
for _, log := range logs {
|
||||
if strings.Contains(log.Message, message) {
|
||||
resLogs = append(resLogs, log)
|
||||
}
|
||||
}
|
||||
err := ctx.JSON(utils.FormatRes(iris.StatusOK, strconv.Itoa(len(resLogs)), resLogs))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
err := ctx.JSON(utils.FormatRes(iris.StatusOK, strconv.Itoa(len(logs)), logs))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 获取日志容器名称列表
|
||||
func getSysLogsContainerList(ctx iris.Context) {
|
||||
var list []string
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
if err := db.Model(&model.SysLogs{}).Distinct("container_name").Find(&list).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
}
|
||||
err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", list))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// 手动保存日志
|
||||
func saveLogs(ctx iris.Context) {
|
||||
cPath, _ := os.Getwd()
|
||||
logPath := path.Join(path.Join(cPath, config.Config.Logs.Nginx))
|
||||
fileList, err := os.ReadDir(logPath)
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
var resLogList []model.Logs
|
||||
var logDealList []model.LogFileDealLog
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
if err1 := db.Find(&logDealList).Error; err1 != nil {
|
||||
logrus.Errorln("sql执行失败:", err1)
|
||||
}
|
||||
for _, file := range fileList {
|
||||
if strings.Contains(file.Name(), "access-") {
|
||||
date := strings.Split(strings.Split(file.Name(), "access-")[1], ".")[0]
|
||||
if checkDate(date, logDealList) {
|
||||
continue
|
||||
}
|
||||
if err1 := db.Where("time like ?", fmt.Sprintf("%s%%", date)).Delete(&resLogList).Error; err1 != nil {
|
||||
logrus.Errorln("sql执行失败:", err1)
|
||||
}
|
||||
logList, err := utils.FileRead(path.Join(logPath, file.Name()), true)
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
for _, v := range logList {
|
||||
c := make(chan model.Logs)
|
||||
go FormatLog(v, date, c)
|
||||
resLogItem := <-c
|
||||
if err1 := db.Create(&resLogItem).Error; err1 != nil {
|
||||
logrus.Errorln("sql执行失败:", err1)
|
||||
}
|
||||
resLogList = append(resLogList, resLogItem)
|
||||
}
|
||||
if err1 := db.Create(&model.LogFileDealLog{
|
||||
Date: date,
|
||||
Success: true,
|
||||
}).Error; err1 != nil {
|
||||
logrus.Errorln("sql执行失败:", err1)
|
||||
}
|
||||
}
|
||||
}
|
||||
err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", resLogList))
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// 判断日期是否已处理
|
||||
func checkDate(date string, list []model.LogFileDealLog) bool {
|
||||
for _, v := range list {
|
||||
if v.Date == date && v.Success {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// 格式化日志内时间格式
|
||||
func formatTime(date string, s string) string {
|
||||
l := strings.Split(s, ":")
|
||||
return fmt.Sprintf("%s %s:%s:%s", date, l[1], l[2], l[3])
|
||||
}
|
||||
|
||||
// 从本地ipLocationList记录中获取IP对应地址
|
||||
func getLocalIpAddr(ip string) string {
|
||||
for _, v := range ipLocationList {
|
||||
if v.Ip == ip {
|
||||
return v.Location
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// 从接口中获取IP对应地址
|
||||
func getIpAddr(ip string) (string, error) {
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
location, err := utils.GetIpLocation(ip)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
ipItem := model.IpsLocation{
|
||||
Ip: ip,
|
||||
Location: location,
|
||||
Model: gorm.Model{},
|
||||
}
|
||||
if err1 := db.Create(&ipItem).Error; err1 != nil {
|
||||
logrus.Errorln("sql执行失败:", err1)
|
||||
}
|
||||
UpdateLocalIpList()
|
||||
return location, nil
|
||||
}
|
85
api_iris/service/admin/logsExport.go
Normal file
85
api_iris/service/admin/logsExport.go
Normal file
@ -0,0 +1,85 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"github.com/kataras/iris/v12"
|
||||
"github.com/sirupsen/logrus"
|
||||
"main/database"
|
||||
"main/jwtSet"
|
||||
"main/model"
|
||||
"main/utils"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func Logs(party iris.Party) {
|
||||
party.Post("/", saveLogs)
|
||||
party.Get("/", jwtSet.Jwt.Serve, checkAdmin, getLogStats)
|
||||
party.Get("/detail", jwtSet.Jwt.Serve, checkAdmin, getLogDetail)
|
||||
party.Get("/sys", jwtSet.Jwt.Serve, checkAdmin, getSysLogs)
|
||||
party.Get("/log-container-list", jwtSet.Jwt.Serve, checkAdmin, getSysLogsContainerList)
|
||||
}
|
||||
|
||||
// FormatLog 对日志内容切分,格式化数据
|
||||
func FormatLog(logItem string, date string, c chan model.Logs) {
|
||||
var resLogItem model.Logs
|
||||
resLogItem.Ip = strings.Split(logItem, " ")[0]
|
||||
resLogItem.Location = GetIpLocation(resLogItem.Ip)
|
||||
//resLogItem.Location = getLocalIpAddr(resLogItem.Ip)
|
||||
//if resLogItem.Location == "" {
|
||||
// resLogItem.Location, _ = getIpAddr(resLogItem.Ip)
|
||||
//}
|
||||
resLogItem.Time = formatTime(date, strings.Split(strings.Split(logItem, "[")[1], "]")[0])
|
||||
if strings.Split(logItem, "\"")[1] != "" {
|
||||
if strings.Contains(strings.Split(logItem, "\"")[1], " /") {
|
||||
resLogItem.Method = strings.Split(strings.Split(logItem, "\"")[1], " ")[0]
|
||||
resLogItem.Path = strings.Split(strings.Split(logItem, "\"")[1], " ")[1]
|
||||
} else {
|
||||
resLogItem.Method = ""
|
||||
resLogItem.Path = strings.Split(logItem, "\"")[1]
|
||||
}
|
||||
resLogItem.Status = strings.Split(strings.Split(logItem, "\" ")[1], " ")[0]
|
||||
}
|
||||
resLogItem.UserAgent = strings.Split(logItem, "\"")[5]
|
||||
c <- resLogItem
|
||||
}
|
||||
|
||||
// GetIpLocation 获取IP对应的地址
|
||||
func GetIpLocation(ip string) string {
|
||||
if len(ipLocationList) == 0 {
|
||||
UpdateLocalIpList()
|
||||
}
|
||||
location := getLocalIpAddr(ip)
|
||||
if location == "" {
|
||||
location, _ = getIpAddr(ip)
|
||||
}
|
||||
return location
|
||||
}
|
||||
|
||||
func UpdateLocalIpList() {
|
||||
var nullDataList []nullData
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
if err := db.Model(&model.Logs{}).
|
||||
Distinct("logs.ip", "ips_locations.location").
|
||||
Where("ips_locations.location is null").
|
||||
Joins("left join ips_locations on logs.ip=ips_locations.ip").
|
||||
Scan(&nullDataList).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
}
|
||||
if len(nullDataList) != 0 {
|
||||
for _, data := range nullDataList {
|
||||
location, err := utils.GetIpLocation(data.IP)
|
||||
if err != nil {
|
||||
logrus.Errorln(data.IP, "IP地址获取失败", err)
|
||||
}
|
||||
if err = db.Create(&model.IpsLocation{
|
||||
Ip: data.IP,
|
||||
Location: location,
|
||||
}).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
if err := db.Distinct("ip, location").Find(&ipLocationList).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
}
|
||||
logrus.Infoln("更新本地IP地址列表")
|
||||
}
|
103
api_iris/service/admin/menus.go
Normal file
103
api_iris/service/admin/menus.go
Normal file
@ -0,0 +1,103 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/kataras/iris/v12"
|
||||
"github.com/sirupsen/logrus"
|
||||
"main/database"
|
||||
"main/model"
|
||||
"main/utils"
|
||||
)
|
||||
|
||||
func getMenu(ctx iris.Context) {
|
||||
err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", utils.MenuList))
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func addMenu(ctx iris.Context) {
|
||||
var param model.Menus
|
||||
err := ctx.ReadJSON(¶m)
|
||||
if utils.ErrHandle(ctx, err) || utils.DataIsNil(param) {
|
||||
return
|
||||
}
|
||||
if (len(param.MenuId) != 3 && len(param.MenuId) != 5) || param.MenuId[0:3] == "000" {
|
||||
utils.ErrHandle(ctx, errors.New("菜单ID格式错误"))
|
||||
return
|
||||
}
|
||||
if checkMenuExist(param) {
|
||||
utils.ErrHandle(ctx, errors.New("菜单ID已存在"))
|
||||
return
|
||||
}
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
if err1 := db.Create(¶m).Error; err1 != nil {
|
||||
logrus.Errorln("sql执行失败:", err1)
|
||||
}
|
||||
err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success"))
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
utils.UpdateMenuList()
|
||||
}
|
||||
|
||||
func updateMenu(ctx iris.Context) {
|
||||
var param model.Menus
|
||||
err := ctx.ReadJSON(¶m)
|
||||
if utils.ErrHandle(ctx, err) || utils.DataIsNil(param) {
|
||||
return
|
||||
}
|
||||
if (len(param.MenuId) != 3 && len(param.MenuId) != 5) || param.MenuId[0:3] == "000" {
|
||||
utils.ErrHandle(ctx, errors.New("菜单ID格式错误"))
|
||||
return
|
||||
}
|
||||
if !checkMenuIDExist(param) || checkMenuExist(param) {
|
||||
utils.ErrHandle(ctx, errors.New("菜单ID已存在"))
|
||||
return
|
||||
}
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
if err1 := db.Save(¶m).Error; err1 != nil {
|
||||
logrus.Errorln("sql执行失败:", err1)
|
||||
}
|
||||
err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success"))
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
utils.UpdateMenuList()
|
||||
}
|
||||
|
||||
func deleteMenu(ctx iris.Context) {
|
||||
menuId := ctx.URLParam("menu_id")
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
utils.UpdateMenuList()
|
||||
for _, menu := range utils.MenuList {
|
||||
if menu.MenuId == menuId || menu.MenuId[0:3] == menuId {
|
||||
if err := db.Delete(&menu).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success"))
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
utils.UpdateMenuList()
|
||||
}
|
||||
|
||||
func checkMenuExist(menu model.Menus) bool {
|
||||
for _, m := range utils.MenuList {
|
||||
if menu.MenuId == m.MenuId && menu.ID != m.ID {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func checkMenuIDExist(menu model.Menus) bool {
|
||||
for _, m := range utils.MenuList {
|
||||
if menu.ID == m.ID {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
13
api_iris/service/admin/menusExport.go
Normal file
13
api_iris/service/admin/menusExport.go
Normal file
@ -0,0 +1,13 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"github.com/kataras/iris/v12"
|
||||
"main/jwtSet"
|
||||
)
|
||||
|
||||
func Menus(party iris.Party) {
|
||||
party.Get("/", jwtSet.Jwt.Serve, checkAdmin, getMenu)
|
||||
party.Post("/", jwtSet.Jwt.Serve, checkAdmin, addMenu)
|
||||
party.Put("/", jwtSet.Jwt.Serve, checkAdmin, updateMenu)
|
||||
party.Delete("/", jwtSet.Jwt.Serve, checkAdmin, deleteMenu)
|
||||
}
|
106
api_iris/service/admin/sysSettings.go
Normal file
106
api_iris/service/admin/sysSettings.go
Normal file
@ -0,0 +1,106 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/kataras/iris/v12"
|
||||
"github.com/sirupsen/logrus"
|
||||
"main/database"
|
||||
"main/model"
|
||||
"main/utils"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func getSysSettings(ctx iris.Context) {
|
||||
var res []resSysSettings
|
||||
var resSysSettingsData []model.SysSettings
|
||||
var currentList []string
|
||||
name := ctx.Params().GetString("name")
|
||||
for _, sysSetting := range utils.SysSettings {
|
||||
if sysSetting.DType == "option" {
|
||||
sysSetting.Name = strings.Split(sysSetting.Name, ":")[0]
|
||||
}
|
||||
if (name != "" && sysSetting.Name != name) || utils.CheckListItem(currentList, sysSetting.Name) {
|
||||
continue
|
||||
} else {
|
||||
resSysSettingsData = nil
|
||||
for _, v := range utils.SysSettings {
|
||||
if strings.Split(v.Name, ":")[0] == sysSetting.Name {
|
||||
resSysSettingsData = append(resSysSettingsData, v)
|
||||
}
|
||||
}
|
||||
currentList = append(currentList, sysSetting.Name)
|
||||
res = append(res, resSysSettings{Name: sysSetting.Name, Data: resSysSettingsData})
|
||||
}
|
||||
}
|
||||
err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", res))
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func addSysSettings(ctx iris.Context) {
|
||||
var params model.SysSettings
|
||||
err := ctx.ReadJSON(¶ms)
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
if !checkExist(params) {
|
||||
if err1 := db.Create(¶ms).Error; err1 != nil {
|
||||
logrus.Errorln("sql执行失败:", err1)
|
||||
}
|
||||
utils.UpdateSysSettings()
|
||||
}
|
||||
err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success"))
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func delSettings(ctx iris.Context) {
|
||||
var params model.SysSettings
|
||||
err := ctx.ReadJSON(¶ms)
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
if err1 := db.Delete(¶ms).Error; err1 != nil {
|
||||
logrus.Errorln("sql执行失败:", err1)
|
||||
}
|
||||
utils.UpdateSysSettings()
|
||||
err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success"))
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func updateSettings(ctx iris.Context) {
|
||||
var params model.SysSettings
|
||||
err := ctx.ReadJSON(¶ms)
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
if !checkExist(params) {
|
||||
if utils.ErrHandle(ctx, errors.New("配置信息不存在")) {
|
||||
return
|
||||
}
|
||||
}
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
if err1 := db.Save(¶ms).Error; err1 != nil {
|
||||
logrus.Errorln("sql执行失败:", err1)
|
||||
}
|
||||
utils.UpdateSysSettings()
|
||||
err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success"))
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func checkExist(setting model.SysSettings) bool {
|
||||
for _, sysSetting := range utils.SysSettings {
|
||||
if setting.Name == sysSetting.Name && setting.Value == sysSetting.Value {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
13
api_iris/service/admin/sysSettingsExport.go
Normal file
13
api_iris/service/admin/sysSettingsExport.go
Normal file
@ -0,0 +1,13 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"github.com/kataras/iris/v12"
|
||||
"main/jwtSet"
|
||||
)
|
||||
|
||||
func SysSettings(party iris.Party) {
|
||||
party.Get("/", jwtSet.Jwt.Serve, checkAdmin, getSysSettings)
|
||||
party.Post("/", jwtSet.Jwt.Serve, checkAdmin, addSysSettings)
|
||||
party.Delete("/", jwtSet.Jwt.Serve, checkAdmin, delSettings)
|
||||
party.Put("/", jwtSet.Jwt.Serve, checkAdmin, updateSettings)
|
||||
}
|
27
api_iris/service/admin/type.d.go
Normal file
27
api_iris/service/admin/type.d.go
Normal file
@ -0,0 +1,27 @@
|
||||
package admin
|
||||
|
||||
import "main/model"
|
||||
|
||||
// logs-----------------------------------------------------------------------------
|
||||
type resIpLocation struct {
|
||||
Flag bool `json:"flag"`
|
||||
Data resIpLocationData `json:"data"`
|
||||
}
|
||||
type resIpLocationData struct {
|
||||
Ip string `json:"ip"`
|
||||
Location string `json:"location"`
|
||||
}
|
||||
type nullData struct {
|
||||
IP string `json:"ip"`
|
||||
Location string `json:"location"`
|
||||
}
|
||||
type resLogStats struct {
|
||||
Name string `json:"name"`
|
||||
Value int `json:"value"`
|
||||
}
|
||||
|
||||
// sysSettings------------------------------------------------------------------------
|
||||
type resSysSettings struct {
|
||||
Name string `json:"name"`
|
||||
Data []model.SysSettings `json:"data"`
|
||||
}
|
66
api_iris/service/admin/user.go
Normal file
66
api_iris/service/admin/user.go
Normal file
@ -0,0 +1,66 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/kataras/iris/v12"
|
||||
"github.com/sirupsen/logrus"
|
||||
"main/database"
|
||||
"main/model"
|
||||
"main/utils"
|
||||
)
|
||||
|
||||
func getUserList(ctx iris.Context) {
|
||||
err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", utils.UserList))
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func updateUserInfo(ctx iris.Context) {
|
||||
var userinfo model.Userinfo
|
||||
err := ctx.ReadJSON(&userinfo)
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
if err1 := db.Save(&userinfo).Error; err1 != nil {
|
||||
logrus.Errorln("sql执行失败:", err1)
|
||||
}
|
||||
utils.UpdateUserInfo()
|
||||
err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success"))
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func deleteUser(ctx iris.Context) {
|
||||
loginUser := utils.GetLoginUser(ctx)
|
||||
username := ctx.URLParam("username")
|
||||
if username == loginUser.Username {
|
||||
logrus.Errorln(loginUser.Username, "无法删除本人")
|
||||
ctx.StatusCode(iris.StatusBadRequest)
|
||||
ctx.SetErr(errors.New("不可删除本人用户"))
|
||||
return
|
||||
}
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
var user []model.User
|
||||
if err := db.Where("username = ?", username).Find(&user).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
}
|
||||
if len(user) == 0 {
|
||||
ctx.StatusCode(iris.StatusBadRequest)
|
||||
ctx.SetErr(errors.New("用户不存在"))
|
||||
return
|
||||
}
|
||||
if err := db.Where("username = ?", username).Delete(&model.User{}).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
}
|
||||
if err := db.Where("username = ?", username).Delete(&model.Userinfo{}).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
}
|
||||
utils.UpdateUserInfo()
|
||||
err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success"))
|
||||
if utils.ErrHandle(ctx, err) {
|
||||
return
|
||||
}
|
||||
}
|
12
api_iris/service/admin/userExport.go
Normal file
12
api_iris/service/admin/userExport.go
Normal file
@ -0,0 +1,12 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"github.com/kataras/iris/v12"
|
||||
"main/jwtSet"
|
||||
)
|
||||
|
||||
func User(party iris.Party) {
|
||||
party.Get("/", jwtSet.Jwt.Serve, checkAdmin, getUserList)
|
||||
party.Put("/", jwtSet.Jwt.Serve, checkAdmin, updateUserInfo)
|
||||
party.Delete("/", jwtSet.Jwt.Serve, checkAdmin, deleteUser)
|
||||
}
|
Reference in New Issue
Block a user