flow.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package service
  2. import (
  3. "context"
  4. "strings"
  5. "go-common/app/job/main/videoup-report/model/archive"
  6. "go-common/library/database/sql"
  7. "go-common/library/log"
  8. )
  9. /**
  10. * txAddFlow 新增流量套餐的记录
  11. * return int64, error/nil
  12. */
  13. func (s *Service) txAddFlow(tx *sql.Tx, pool int8, oid, groupID, uid int64, remark string) (id int64, err error) {
  14. if id, err = s.arc.TxAddFlow(tx, pool, oid, uid, groupID, remark); err != nil {
  15. log.Error("txAddFlow s.arc.TxAddFlow(%d,%d,%d,%d,%s) error(%v)", pool, oid, uid, groupID, remark, err)
  16. return
  17. }
  18. if id <= 0 {
  19. return
  20. }
  21. if _, err = s.arc.TxAddFlowLog(tx, pool, archive.FlowLogAdd, oid, uid, groupID, remark); err != nil {
  22. log.Error("txAddFlow s.arc.TxAddFlowLog(%d,%d,%d,%d,%s) error(%v)", pool, oid, uid, groupID, remark, err)
  23. return
  24. }
  25. return
  26. }
  27. /**
  28. * txUpFlowState 更新流量套餐的状态
  29. * return error/nil
  30. */
  31. func (s *Service) txUpFlowState(tx *sql.Tx, state int8, uid int64, f *archive.FlowData) (err error) {
  32. if f == nil {
  33. return
  34. }
  35. var rows int64
  36. if rows, err = s.arc.TxUpFlowState(tx, f.ID, state); err != nil {
  37. log.Error("updateFlowState s.arc.TxUpFlowState error(%v) id(%d) state(%d)", err, f.ID, state)
  38. return
  39. }
  40. if rows <= 0 {
  41. return
  42. }
  43. action := archive.FlowLogUpdate
  44. if state == archive.FlowDelete {
  45. action = archive.FlowLogDel
  46. }
  47. if _, err = s.arc.TxAddFlowLog(tx, f.Pool, action, f.OID, uid, f.GroupID, "审核后台修改状态"); err != nil {
  48. log.Error("updateFlowState s.arc.TxAddFlowLog error(%v) pool(%d) oid(%d) uid(%d) state(%d)", err, f.Pool, f.OID, uid, state)
  49. return
  50. }
  51. return
  52. }
  53. /**
  54. * txAddOrUpdateFlowState 新增或更新流量套餐的状态
  55. * return *archive.FlowData/nil, bool, error/nil
  56. */
  57. func (s *Service) txAddOrUpdateFlowState(c context.Context, tx *sql.Tx, oid, groupID, uid int64, pool, state int8, remark string) (flow *archive.FlowData, diff string, err error) {
  58. var (
  59. old, nw int8
  60. )
  61. defer func() {
  62. if err == nil && old != nw {
  63. tagID := archive.FlowOperType[groupID]
  64. if tagID > 0 {
  65. stateMap := map[int8]string{archive.FlowOpen: "是", archive.FlowDelete: "否"}
  66. diff = strings.TrimSpace(archive.Operformat(tagID, stateMap[old], stateMap[nw], archive.OperStyleOne))
  67. }
  68. }
  69. }()
  70. if flow, err = s.arc.FlowUnique(c, oid, groupID, pool); err != nil {
  71. log.Error("txAddOrUpdateFlowState s.arc.FlowUnique(%d,%d,%d) error(%v) state(%d)", oid, groupID, pool, err, state)
  72. return
  73. }
  74. //无数据前提下,新状态=state就没必要添加数据啦
  75. if flow == nil && state == archive.FlowDelete {
  76. return
  77. }
  78. if flow == nil {
  79. flow = &archive.FlowData{Pool: pool, OID: oid, GroupID: groupID, State: archive.FlowOpen}
  80. if flow.ID, err = s.txAddFlow(tx, flow.Pool, flow.OID, flow.GroupID, uid, remark); err != nil {
  81. log.Error("txAddOrUpdateFlowState s.txAddFlow error(%v) flow(%+v) state(%d)", err, flow, state)
  82. return
  83. }
  84. old = archive.FlowDelete
  85. nw = archive.FlowOpen
  86. } else {
  87. old = flow.State
  88. nw = state
  89. }
  90. if flow.State == state {
  91. return
  92. }
  93. if err = s.txUpFlowState(tx, state, uid, flow); err != nil {
  94. log.Error("txAddOrUpdateFlowState s.txUpdateFlowState error(%v) flow(%+v) state(%d) ", err, flow, state)
  95. return
  96. }
  97. flow.State = state
  98. nw = state
  99. return
  100. }