fix: query im kafka tables with gf raw helpers
This commit is contained in:
@@ -16,11 +16,6 @@ import (
|
|||||||
"github.com/gogf/gf/v2/util/guid"
|
"github.com/gogf/gf/v2/util/guid"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
adminCommandTable = "im_admin_commands"
|
|
||||||
adminOutboxTable = "im_admin_outbox"
|
|
||||||
)
|
|
||||||
|
|
||||||
func PublishAdminCommand(ctx context.Context, in AdminCommandInput) (res *AdminCommandModel, err error) {
|
func PublishAdminCommand(ctx context.Context, in AdminCommandInput) (res *AdminCommandModel, err error) {
|
||||||
if in.TenantID <= 0 || in.TenantCode == "" {
|
if in.TenantID <= 0 || in.TenantCode == "" {
|
||||||
return nil, gerror.New("IM租户信息不完整")
|
return nil, gerror.New("IM租户信息不完整")
|
||||||
@@ -106,9 +101,9 @@ func PublishAdminCommand(ctx context.Context, in AdminCommandInput) (res *AdminC
|
|||||||
}
|
}
|
||||||
|
|
||||||
func DispatchOutboxByEvent(ctx context.Context, eventID string) error {
|
func DispatchOutboxByEvent(ctx context.Context, eventID string) error {
|
||||||
var row gdb.Record
|
row, err := g.DB().GetOne(ctx, `SELECT * FROM im_admin_outbox WHERE event_id=? AND status=? LIMIT 1`,
|
||||||
if err := g.DB().Raw(`SELECT * FROM im_admin_outbox WHERE event_id=? AND status=? LIMIT 1`,
|
eventID, consts.ImAdminOutboxStatusPending)
|
||||||
eventID, consts.ImAdminOutboxStatusPending).Scan(&row); err != nil {
|
if err != nil {
|
||||||
return gerror.Wrap(err, "读取IM命令Outbox失败")
|
return gerror.Wrap(err, "读取IM命令Outbox失败")
|
||||||
}
|
}
|
||||||
if row.IsEmpty() {
|
if row.IsEmpty() {
|
||||||
@@ -221,10 +216,9 @@ func DispatchPendingOutbox(ctx context.Context, limit int) (sent int, err error)
|
|||||||
if limit <= 0 {
|
if limit <= 0 {
|
||||||
limit = 100
|
limit = 100
|
||||||
}
|
}
|
||||||
var rows []gdb.Record
|
rows, err := g.DB().GetAll(ctx, `SELECT * FROM im_admin_outbox
|
||||||
err = g.DB().Raw(`SELECT * FROM im_admin_outbox
|
|
||||||
WHERE status IN (?,?) AND (next_retry_at IS NULL OR next_retry_at <= NOW())
|
WHERE status IN (?,?) AND (next_retry_at IS NULL OR next_retry_at <= NOW())
|
||||||
ORDER BY id ASC LIMIT ?`, consts.ImAdminOutboxStatusPending, consts.ImAdminOutboxStatusFailed, limit).Scan(&rows)
|
ORDER BY id ASC LIMIT ?`, consts.ImAdminOutboxStatusPending, consts.ImAdminOutboxStatusFailed, limit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, gerror.Wrap(err, "读取待投递IM命令Outbox失败")
|
return 0, gerror.Wrap(err, "读取待投递IM命令Outbox失败")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,10 +34,12 @@ func (s *sSysImKafkaCommand) List(ctx context.Context, in *sysin.ImKafkaCommandL
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
where, args := buildImKafkaCommandWhere(in)
|
where, args := buildImKafkaCommandWhere(in)
|
||||||
if err = g.DB().Raw("SELECT COUNT(*) FROM im_admin_commands "+where, args...).Scan(&totalCount); err != nil {
|
totalValue, err := g.DB().GetValue(ctx, "SELECT COUNT(*) FROM im_admin_commands "+where, args...)
|
||||||
|
if err != nil {
|
||||||
err = gerror.Wrap(err, "获取IM后台命令总数失败,请稍后重试!")
|
err = gerror.Wrap(err, "获取IM后台命令总数失败,请稍后重试!")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
totalCount = totalValue.Int()
|
||||||
page := in.Page
|
page := in.Page
|
||||||
if page <= 0 {
|
if page <= 0 {
|
||||||
page = 1
|
page = 1
|
||||||
@@ -51,8 +53,13 @@ func (s *sSysImKafkaCommand) List(ctx context.Context, in *sysin.ImKafkaCommandL
|
|||||||
status,reason,message,sent_at,completed_at,created_by,created_at,updated_at
|
status,reason,message,sent_at,completed_at,created_by,created_at,updated_at
|
||||||
FROM im_admin_commands ` + where + ` ORDER BY id DESC LIMIT ? OFFSET ?`
|
FROM im_admin_commands ` + where + ` ORDER BY id DESC LIMIT ? OFFSET ?`
|
||||||
queryArgs := append(append([]any{}, args...), perPage, offset)
|
queryArgs := append(append([]any{}, args...), perPage, offset)
|
||||||
if err = g.DB().Raw(query, queryArgs...).Scan(&list); err != nil {
|
rows, err := g.DB().GetAll(ctx, query, queryArgs...)
|
||||||
|
if err != nil {
|
||||||
err = gerror.Wrap(err, "获取IM后台命令列表失败,请稍后重试!")
|
err = gerror.Wrap(err, "获取IM后台命令列表失败,请稍后重试!")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err = rows.Structs(&list); err != nil {
|
||||||
|
err = gerror.Wrap(err, "解析IM后台命令列表失败,请稍后重试!")
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -73,9 +80,16 @@ func (s *sSysImKafkaCommand) View(ctx context.Context, in *sysin.ImKafkaCommandV
|
|||||||
args = append(args, in.CommandId)
|
args = append(args, in.CommandId)
|
||||||
}
|
}
|
||||||
query += " LIMIT 1"
|
query += " LIMIT 1"
|
||||||
if err = g.DB().Raw(query, args...).Scan(&res); err != nil {
|
row, err := g.DB().GetOne(ctx, query, args...)
|
||||||
|
if err != nil {
|
||||||
return nil, gerror.Wrap(err, "获取IM后台命令详情失败,请稍后重试!")
|
return nil, gerror.Wrap(err, "获取IM后台命令详情失败,请稍后重试!")
|
||||||
}
|
}
|
||||||
|
if row.IsEmpty() {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
if err = row.Struct(&res); err != nil {
|
||||||
|
return nil, gerror.Wrap(err, "解析IM后台命令详情失败,请稍后重试!")
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user