service_updateused.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package cron
  2. import (
  3. "github.com/xinliangnote/go-gin-api/internal/pkg/core"
  4. "github.com/xinliangnote/go-gin-api/internal/repository/mysql"
  5. "github.com/xinliangnote/go-gin-api/internal/repository/mysql/cron_task"
  6. "github.com/spf13/cast"
  7. )
  8. func (s *service) UpdateUsed(ctx core.Context, id int32, used int32) (err error) {
  9. data := map[string]interface{}{
  10. "is_used": used,
  11. "updated_user": ctx.SessionUserInfo().UserName,
  12. }
  13. qb := cron_task.NewQueryBuilder()
  14. qb.WhereId(mysql.EqualPredicate, id)
  15. err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data)
  16. if err != nil {
  17. return err
  18. }
  19. // region 操作定时任务 避免主从同步延迟,在这需要查询主库
  20. if used == cron_task.IsUsedNo {
  21. s.cronServer.RemoveTask(cast.ToInt(id))
  22. } else {
  23. qb = cron_task.NewQueryBuilder()
  24. qb.WhereId(mysql.EqualPredicate, id)
  25. info, err := qb.QueryOne(s.db.GetDbW().WithContext(ctx.RequestContext()))
  26. if err != nil {
  27. return err
  28. }
  29. s.cronServer.RemoveTask(cast.ToInt(id))
  30. s.cronServer.AddTask(info)
  31. }
  32. // endregion
  33. return
  34. }