128 lines
2.5 KiB
Go
128 lines
2.5 KiB
Go
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, "更新成功")
|
|
}
|