group_user.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package mint
  2. import (
  3. "net/http"
  4. "time"
  5. "github.com/gin-gonic/gin"
  6. "github.com/go-pg/pg/v10"
  7. "github.com/go-redis/redis/v8"
  8. )
  9. type GroupsUser struct {
  10. Id int `form:"id" json:"id" `
  11. GroupId int `form:"group_id" json:"group_id" `
  12. UserId int `form:"user_id" json:"user_id" `
  13. CreatedAt time.Time
  14. }
  15. //display a list of all groups
  16. func GroupsUsersIndex(db *pg.DB) gin.HandlerFunc {
  17. return func(c *gin.Context) {
  18. var dbData []GroupsUser
  19. view := c.Query("view")
  20. switch view {
  21. case "group":
  22. err := db.Model(&dbData).Column("uid", "name").Where("group_id = ?", c.Query("group")).Select()
  23. panicIf(err)
  24. case "user":
  25. err := db.Model(&dbData).Column("uid", "name").Where("user_id = ?", c.Query("user")).Select()
  26. panicIf(err)
  27. }
  28. // TODO 补充业务逻辑
  29. c.JSON(http.StatusOK, gin.H{
  30. "status": "success",
  31. "data": dbData,
  32. })
  33. }
  34. }
  35. //create a new group-user
  36. func GroupsUsersCreate(db *pg.DB) gin.HandlerFunc {
  37. return func(c *gin.Context) {
  38. var form GroupsUser
  39. if err := c.ShouldBindJSON(&form); err != nil {
  40. c.JSON(http.StatusBadRequest, gin.H{
  41. "status": "fail",
  42. "message": err.Error(),
  43. })
  44. return
  45. }
  46. _, err := db.Model(form).Column("group_id", "user_id").Insert()
  47. if err != nil {
  48. panic(err)
  49. }
  50. //建立成功
  51. c.JSON(http.StatusOK, gin.H{
  52. "status": "success",
  53. "data": form,
  54. })
  55. }
  56. }
  57. //delete a specific group-user
  58. func GroupsUsersDestroy(db *pg.DB, rdb *redis.Client) gin.HandlerFunc {
  59. return func(c *gin.Context) {
  60. groupId := c.Query("group")
  61. userId := c.DefaultQuery("user", "")
  62. if userId == "" {
  63. //删除整个组
  64. _, err := db.Model((*GroupsUser)(nil)).Where("group_id = ?", groupId).Delete()
  65. panicIf(err)
  66. } else {
  67. //删除一个成员
  68. _, err := db.Model((*GroupsUser)(nil)).Where("group_id = ?", groupId).Where("user_id = ?", userId).Delete()
  69. panicIf(err)
  70. }
  71. c.JSON(http.StatusOK, gin.H{
  72. "status": "sucess",
  73. "data": groupId,
  74. })
  75. }
  76. }