Merge remote-tracking branch 'origin/main' into main

# Conflicts:
#	app/services/db_service/db_service.go
This commit is contained in:
renzhiyuan 2024-11-29 14:57:43 +08:00
commit cdbba6b3c0
13 changed files with 116 additions and 16 deletions

View File

@ -4,10 +4,13 @@ import (
"cron_admin/app/constants/errorcode"
"cron_admin/app/http/controllers"
"cron_admin/app/http/entities/backend"
"cron_admin/app/models/croncmdmodel"
"cron_admin/app/services"
cmd_services "cron_admin/app/services/cmd_service"
"cron_admin/app/utils/helper"
"cron_admin/app/utils/mapstructure"
"github.com/gin-gonic/gin"
"strconv"
)
func CronFuncLogsList(c *gin.Context) {
@ -18,7 +21,33 @@ func CronFuncLogsList(c *gin.Context) {
} else {
var funcLogsListResponse []backend.CronFuncLogsListResponse
_ = mapstructure.DecodeWithTime(funcLogsList, &funcLogsListResponse, helper.DefaultFormatLayout)
// todo 获取当前列表下的CmdName
// 获取当前列表下的CmdName
// 获取所有的cmd_id
var cmdIds []string
cmdIdsMap := make(map[int64]bool)
for _, v := range funcLogsListResponse {
if _, ok := cmdIdsMap[v.CmdId]; ok {
continue
}
cmdIdsMap[v.CmdId] = true
// v.cmdId 转成string
cmdIdStr := strconv.FormatInt(v.CmdId, 10)
cmdIds = append(cmdIds, cmdIdStr)
}
// 获取所有的cmd_id对应的CmdName
_, cmdList, err := cmd_services.GetListByWhere(&backend.CmdListRequest{CmdIds: cmdIds}, 1, 100)
if err != nil {
return
}
cmdListMap := make(map[int64]croncmdmodel.CronCmd)
for _, v := range cmdList {
cmdListMap[int64(v.CmdId)] = v
}
for k, v := range funcLogsListResponse {
if cmdListMap != nil && cmdListMap[v.CmdId].CmdName != "" {
funcLogsListResponse[k].CmdName = cmdListMap[v.CmdId].CmdName
}
}
controllers.HandRes(c, gin.H{"data": funcLogsListResponse, "count": count}, err)
}
}

View File

@ -4,12 +4,15 @@ import (
"cron_admin/app/constants/errorcode"
"cron_admin/app/http/controllers"
"cron_admin/app/http/entities/backend"
"cron_admin/app/models/croncmdmodel"
"cron_admin/app/models/cronusermodel"
"cron_admin/app/services"
cmd_services "cron_admin/app/services/cmd_service"
userServices "cron_admin/app/services/user_service"
"cron_admin/app/utils/helper"
"cron_admin/app/utils/mapstructure"
"github.com/gin-gonic/gin"
"strconv"
"strings"
)
@ -24,6 +27,8 @@ func CronReportLogsList(c *gin.Context) {
// 合并reportLogsListResponse下的所有user_id 并去重
var userIds []string
userIdsMap := make(map[int64]bool)
var cmdIds []string
cmdIdsMap := make(map[int64]bool)
for _, v := range reportLogsListResponse {
userIdsStr := strings.Split(v.UserId, ",")
for _, userId := range userIdsStr {
@ -35,6 +40,13 @@ func CronReportLogsList(c *gin.Context) {
userIds = append(userIds, userId)
}
}
if _, ok := cmdIdsMap[v.CmdId]; ok {
continue
}
cmdIdsMap[v.CmdId] = true
// v.cmdId 转成string
cmdIdStr := strconv.FormatInt(v.CmdId, 10)
cmdIds = append(cmdIds, cmdIdStr)
}
_, userList, err := userServices.GetListByWhere(&backend.UserListRequest{UserIds: userIds}, 1, 100)
if err != nil {
@ -44,6 +56,15 @@ func CronReportLogsList(c *gin.Context) {
for _, v := range userList {
userListMap[int64(v.UserId)] = v
}
// 获取所有的cmd_id对应的CmdName
_, cmdList, err := cmd_services.GetListByWhere(&backend.CmdListRequest{CmdIds: cmdIds}, 1, 100)
if err != nil {
return
}
cmdListMap := make(map[int64]croncmdmodel.CronCmd)
for _, v := range cmdList {
cmdListMap[int64(v.CmdId)] = v
}
for k, v := range reportLogsListResponse {
userIdsStr := strings.Split(v.UserId, ",")
var userNames []string
@ -54,6 +75,9 @@ func CronReportLogsList(c *gin.Context) {
}
userNamesStr := strings.Join(userNames, ",")
reportLogsListResponse[k].UserName = userNamesStr
if cmdListMap != nil && cmdListMap[v.CmdId].CmdName != "" {
reportLogsListResponse[k].CmdName = cmdListMap[v.CmdId].CmdName
}
}
controllers.HandRes(c, gin.H{"data": reportLogsListResponse, "count": count}, err)

View File

@ -39,3 +39,10 @@ func DbDel(c *gin.Context) {
err := db_service.DbDel(request)
controllers.HandRes(c, nil, err)
}
// 测试连接
func DbTest(c *gin.Context) {
request := controllers.GetRequest(c).(*backend.DbTestRequest)
err := db_service.DbTest(request)
controllers.HandRes(c, nil, err)
}

View File

@ -14,6 +14,7 @@ type CmdListRequest struct {
CmdName string `json:"cmd_name" form:"cmd_name" example:"155555555"`
Status int `json:"status" form:"status" example:"1"`
ExecuteType int `json:"execute_type" form:"execute_type" example:"46516"`
CmdIds []string `json:"cmd_id"`
}
type CmdInfoRequest struct {

View File

@ -64,6 +64,7 @@ type ReportChannelListResponse struct {
Config string `json:"config"`
CreateTime string `json:"create_time"`
Status int `json:"status"`
UpdateTime string `json:"update_time"`
}
func (this *ReportChannelListResponse) FromDb(in cronreportchannelmodel.CronReportChannel) {
@ -73,6 +74,7 @@ func (this *ReportChannelListResponse) FromDb(in cronreportchannelmodel.CronRepo
this.Config = in.Config
this.CreateTime = in.CreateTime.Format("2006-01-02 15:04:05")
this.Status = in.Status
this.UpdateTime = in.UpdateTime.Format("2006-01-02 15:04:05")
}
type ReportChannelCreateRequest struct {

View File

@ -16,6 +16,7 @@ type CronReportLogsListResponse struct {
ReportId int64 `json:"report_id"`
FuncLogId int64 `json:"func_log_id"`
CmdId int64 `json:"cmd_id"`
CmdName string `json:"cmd_name"`
UserId string `json:"user_id"`
UserName string `json:"user_name"`
Data string `json:"data"`

View File

@ -29,12 +29,16 @@ type DbAddRequest struct {
Status int `json:"status" form:"status" example:"1"`
}
type DbTestRequest struct {
Source string `json:"source" validate:"required" form:"source" example:""`
}
type DbEditRequest struct {
DbId int `json:"db_id" validate:"required" form:"db_id" example:""`
DbName string `json:"db_name" validate:"required" form:"db_name" example:""`
DbType string `json:"db_type" validate:"required" form:"db_type" example:"mysql"`
DbPermission int `json:"db_permission" validate:"required" form:"db_permission" example:"1"`
Source string `json:"source" validate:"required" form:"source" example:""`
Source string `json:"source" form:"source" example:""`
Desc string `json:"desc" form:"desc" example:""`
Status int `json:"status" form:"status" example:"1"`
}

View File

@ -25,6 +25,7 @@ var BackendRequestMap = map[string]func() interface{}{
common.ADMIN_OAUTH_V1 + "/sql/add": func() interface{} { return new(backend.DbAddRequest) },
common.ADMIN_OAUTH_V1 + "/sql/edit": func() interface{} { return new(backend.DbEditRequest) },
common.ADMIN_OAUTH_V1 + "/sql/del": func() interface{} { return new(backend.DbDeleteRequest) },
common.ADMIN_OAUTH_V1 + "/sql/test": func() interface{} { return new(backend.DbTestRequest) },
// 消息渠道
common.ADMIN_OAUTH_V1 + "/channel/create": func() interface{} { return new(backend.ReportChannelCreateRequest) },

View File

@ -44,6 +44,7 @@ func RegisterAdminRoute(router *gin.Engine) {
sql.POST("/add", backend.DbAdd)
sql.POST("/edit", backend.DbEdit)
sql.DELETE("/del", backend.DbDel)
sql.POST("/test", backend.DbTest)
}
//任务
cmd := v1.Group("/cmd")

View File

@ -28,6 +28,10 @@ func GetListByWhere(request *backend.CmdListRequest, page int, limit int) (count
if request.ExecuteType != 0 {
cond = cond.And(builder.Eq{"execute_type": request.ExecuteType})
}
if len(request.CmdIds) > 0 {
// 使用IN查询
cond = cond.And(builder.In("cmd_id", request.CmdIds))
}
session := croncmdmodel.GetInstance().GetDb().Where(cond)

View File

@ -22,7 +22,7 @@ func ReportChannelList(param backend.ReportChannelList) (list []cronreportchanne
repo = repository.NewReportChannelRepo()
opts = make([]repository.DBOption, 0)
)
opts = append(opts, repo.WithDesc("report_channel_id"))
if param.ReportChannelId > 0 {
opts = append(opts, repo.WithByID(uint(param.ReportChannelId)))
}

View File

@ -9,13 +9,13 @@ import (
func CronReportLogsList(request *backend.CronReportLogsListRequest, page int, limit int) (count int64, listInfo []cronreportlogsmodel.CronReportLogs, err error) {
conn := builder.NewCond()
if request.FuncLogId != 0 {
conn = conn.And(builder.Eq{"FuncLogId": request.FuncLogId})
conn = conn.And(builder.Eq{"func_log_id": request.FuncLogId})
}
if request.CmdId != 0 {
conn = conn.And(builder.Eq{"CmdId": request.CmdId})
conn = conn.And(builder.Eq{"cmd_id": request.CmdId})
}
if request.Status != 0 {
conn = conn.And(builder.Eq{"Status": request.Status})
conn = conn.And(builder.Eq{"status": request.Status})
}
// 使用FIND_IN_SET 函数
if request.UserId != 0 {

View File

@ -1,10 +1,15 @@
package db_service
import (
"context"
"cron_admin/app/constants/common"
"cron_admin/app/constants/errorcode"
"cron_admin/app/http/entities/backend"
"cron_admin/app/models/crondbmodel"
"cron_admin/app/utils/mapstructure"
"database/sql"
"fmt"
"time"
"xorm.io/builder"
)
@ -26,7 +31,7 @@ func DbList(request *backend.DbListRequest, page int, limit int) (count int64, D
if request.DbPermission != 0 {
session = session.And(builder.Eq{"DbPermission": request.DbPermission})
}
count, err = session.Omit("source", "UpdateTime").FindAndCount(&DbListInfo)
count, err = session.OrderBy("db_id desc").Omit("source", "UpdateTime").FindAndCount(&DbListInfo)
if err != nil {
return
}
@ -42,8 +47,16 @@ func DbAdd(request *backend.DbAddRequest) (err error) {
}
func DbEdit(request *backend.DbEditRequest) (err error) {
var info crondbmodel.CronDb
flag, _ := crondbmodel.GetInstance().GetDb().ID(request.DbId).Get(&info)
if !flag {
return
}
var db crondbmodel.CronDb
_ = mapstructure.Decode(request, &db)
if request.Source == "" {
request.Source = info.Source
}
_, err = crondbmodel.GetInstance().GetDb().ID(request.DbId).Update(&db)
return
}
@ -53,7 +66,20 @@ func DbDel(request *backend.DbDeleteRequest) (err error) {
return
}
//func DbRange(value []int) (results []crondbmodel.CronDb, err error) {
// _, err = crondbmodel.GetInstance().GetDb().FindAndCount(&results)
// return
//}
func DbTest(request *backend.DbTestRequest) (err error) {
// 打开数据库连接
db, err := sql.Open("mysql", request.Source)
if err != nil {
return err
}
defer db.Close()
// 使用 context 来设置 Ping 的超时时间
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
// 测试连接
err = db.PingContext(ctx)
if err != nil {
return errorcode.NewBusinessErr(301, fmt.Sprintf("数据库连接失败: %v", err))
}
return
}