up_group.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package manager
  2. import (
  3. "context"
  4. "database/sql"
  5. "fmt"
  6. "strings"
  7. upgrpc "go-common/app/service/main/up/api/v1"
  8. "go-common/app/service/main/up/dao"
  9. "go-common/app/service/main/up/model"
  10. xsql "go-common/library/database/sql"
  11. "go-common/library/log"
  12. )
  13. const (
  14. _insertGroup = "INSERT INTO up_group (name, tag, short_tag, colors, remark) VALUES (?,?,?,?,?)"
  15. _checkGroupExist = "SELECT COUNT(0) FROM up_group WHERE (name=? OR tag=? OR short_tag=?) "
  16. _updateGroupByID = "UPDATE up_group SET name=?, tag=?, short_tag=?, colors=?, remark=? WHERE id=?"
  17. _removeGroupByID = "UPDATE up_group SET state=0 WHERE id=?"
  18. _selectGroup = "SELECT id, name, tag, short_tag, remark, colors, state FROM up_group "
  19. _upGroupsSQL = "SELECT id, name, tag, short_tag, remark, colors FROM up_group WHERE state = 1"
  20. )
  21. //AddGroup add group in db
  22. func (d *Dao) AddGroup(c context.Context, groupAddInfo *model.AddGroupArg) (res sql.Result, err error) {
  23. var color = fmt.Sprintf("%s|%s", groupAddInfo.FontColor, groupAddInfo.BgColor)
  24. res, err = prepareAndExec(c, d.managerDB, _insertGroup, groupAddInfo.Name, groupAddInfo.Tag, groupAddInfo.ShortTag, color, groupAddInfo.Remark)
  25. return
  26. }
  27. //CheckGroupExist check if group exist
  28. func (d *Dao) CheckGroupExist(c context.Context, groupAddInfo *model.AddGroupArg, exceptid int64) (exist bool, err error) {
  29. var sqlStr = _checkGroupExist
  30. var args = []interface{}{groupAddInfo.Name, groupAddInfo.Tag, groupAddInfo.ShortTag}
  31. if exceptid != 0 {
  32. sqlStr += " AND id != ?"
  33. args = append(args, exceptid)
  34. }
  35. rows, err := prepareAndQuery(c, d.managerDB, sqlStr, args...)
  36. if err != nil {
  37. return
  38. }
  39. defer rows.Close()
  40. var count int
  41. for rows.Next() {
  42. err = rows.Scan(&count)
  43. break
  44. }
  45. if err != nil {
  46. return
  47. }
  48. exist = count > 0
  49. return
  50. }
  51. //UpdateGroup update group
  52. func (d *Dao) UpdateGroup(c context.Context, groupAddInfo *model.EditGroupArg) (res sql.Result, err error) {
  53. if groupAddInfo.AddArg == nil {
  54. return
  55. }
  56. var color = fmt.Sprintf("%s|%s", groupAddInfo.AddArg.FontColor, groupAddInfo.AddArg.BgColor)
  57. res, err = prepareAndExec(c, d.managerDB, _updateGroupByID, groupAddInfo.AddArg.Name, groupAddInfo.AddArg.Tag, groupAddInfo.AddArg.ShortTag, color, groupAddInfo.AddArg.Remark, groupAddInfo.ID)
  58. return
  59. }
  60. //RemoveGroup remove group
  61. func (d *Dao) RemoveGroup(c context.Context, arg *model.RemoveGroupArg) (res sql.Result, err error) {
  62. res, err = prepareAndExec(c, d.managerDB, _removeGroupByID, arg.ID)
  63. return
  64. }
  65. //GetGroup get group
  66. func (d *Dao) GetGroup(c context.Context, arg *model.GetGroupArg) (res []*model.UpGroup, err error) {
  67. var con = dao.Condition{
  68. Key: "state",
  69. Operator: "=",
  70. Value: arg.State,
  71. }
  72. var conditionStr, vals, _ = dao.ConcatCondition(con)
  73. rows, err := prepareAndQuery(c, d.managerDB, _selectGroup+"WHERE "+conditionStr, vals...)
  74. if err != nil {
  75. return
  76. }
  77. defer rows.Close()
  78. // id, name, tag, short_tag, remark, colors
  79. var colorStr string
  80. for rows.Next() {
  81. var group = model.UpGroup{}
  82. err = rows.Scan(&group.ID, &group.Name, &group.Tag, &group.ShortTag, &group.Remark, &colorStr, &group.State)
  83. if err != nil {
  84. log.Error("scan row failed, err=%v", err)
  85. break
  86. }
  87. var colors = strings.Split(colorStr, "|")
  88. if len(colors) >= 2 {
  89. group.FontColor = colors[0]
  90. group.BgColor = colors[1]
  91. }
  92. res = append(res, &group)
  93. }
  94. return
  95. }
  96. // UpGroups get up special group data.
  97. func (d *Dao) UpGroups(c context.Context) (mug map[int64]*upgrpc.UpGroup, err error) {
  98. rows, err := d.managerDB.Query(c, _upGroupsSQL)
  99. if err != nil {
  100. return
  101. }
  102. defer rows.Close()
  103. mug = make(map[int64]*upgrpc.UpGroup)
  104. for rows.Next() {
  105. var (
  106. colorStr string
  107. colors []string
  108. ug = new(upgrpc.UpGroup)
  109. )
  110. if err = rows.Scan(&ug.ID, &ug.Name, &ug.Tag, &ug.ShortTag, &ug.Note, &colorStr); err != nil {
  111. if err == xsql.ErrNoRows {
  112. err = nil
  113. }
  114. return
  115. }
  116. colors = strings.Split(colorStr, "|")
  117. if len(colors) >= 2 {
  118. ug.FontColor = colors[0]
  119. ug.BgColor = colors[1]
  120. }
  121. mug[ug.ID] = ug
  122. }
  123. return
  124. }