package space import ( "allapp/api/router/middleware" "allapp/api/types" "allapp/db" "allapp/db/repo" "allapp/utils/requestx" "allapp/utils/responsex" "github.com/gofiber/fiber/v3" ) // UpdateSpaceDefault 更新空间默认情况 func UpdateSpaceDefault(c fiber.Ctx) error { dto := new(types.UpdateSpaceIsDefaultDTO) if err := requestx.BindAndValidate(c, dto); err != nil { return err } userId, err := middleware.GetUserID(c) if err != nil { return err } err = db.WithTx(c.Context(), func(q *repo.Queries) error { err = q.UpdateSpaceIsDefault(c.Context(), repo.UpdateSpaceIsDefaultParams{ SpaceID: dto.SpaceId, UserID: userId, IsDefault: dto.IsDefault, }) if err != nil { return err } var otherDefault int16 if dto.IsDefault == 1 { otherDefault = 0 } err = q.UpdateOtherSpacesIsDefault(c.Context(), repo.UpdateOtherSpacesIsDefaultParams{ IsDefault: otherDefault, UserID: userId, SpaceID: dto.SpaceId, }) if err != nil { return err } return nil }) if err != nil { return err } return responsex.OK(c, "更新成功") } // UpdateMemberName 更新群成员名称 func UpdateMemberName(c fiber.Ctx) error { dto := new(types.UpdateMemberNameDTO) if err := requestx.BindAndValidate(c, dto); err != nil { return err } userId, err := middleware.GetUserID(c) if err != nil { return err } err = db.Queries.UpdateSpaceMemberName(c.Context(), repo.UpdateSpaceMemberNameParams{ SpaceID: dto.SpaceId, UserID: userId, MemberName: dto.MemberName, }) if err != nil { return err } return responsex.OK(c, "更新成功") } // UpdateSpaceSortNumber 更新空间排序 func UpdateSpaceSortNumber(c fiber.Ctx) error { dto := new(types.UpdateSpaceSortNumberDTO) if err := requestx.BindAndValidate(c, dto); err != nil { return err } userId, err := middleware.GetUserID(c) if err != nil { return err } // 组装批量更新参数 params := make([]repo.BatchUpdateSpaceSortNumberParams, 0, len(dto.Spaces)) for _, datum := range dto.Spaces { params = append(params, repo.BatchUpdateSpaceSortNumberParams{ SortNumber: datum.SortNumber, SpaceID: datum.SpaceId, UserID: userId, }) } // 使用统一事务封装 err = db.WithTx(c.Context(), func(q *repo.Queries) error { batch := q.BatchUpdateSpaceSortNumber(c.Context(), params) if err := db.RunBatch(c.Context(), batch); err != nil { return err } return nil }) if err != nil { return err } return responsex.OK(c, "更新成功") }