12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package biz
- import (
- "context"
- "github.com/bwmarrin/snowflake"
- "os"
- "w303a/server/app/user/internal/conf"
- "w303a/server/pkg/zaplog"
- )
- // Group 群聊
- type Group struct {
- Entity[int64]
- Name string
- Members []*Member
- }
- type GroupRepo interface {
- // Save 创建群聊数据
- Save(ctx context.Context, group *Group) error
- // FindByID 根据 id 查找群聊数据
- FindByID(ctx context.Context, id ID[int64]) (*Group, error)
- }
- type GroupUsecase struct {
- c *conf.Server
- log *zaplog.Logger
- groupRepo GroupRepo
- }
- // Create 创建群聊
- func (uc *GroupUsecase) Create(ctx context.Context, memberList []*Member) error {
- group := &Group{Members: memberList}
- group.ID = generateGroupID()
- return uc.groupRepo.Save(ctx, group)
- }
- // Leave 退出群聊
- func (uc *GroupUsecase) Leave(ctx context.Context, groupId ID[int64], memb Member) error {
- return nil
- }
- // Join 加入群聊
- func (uc *GroupUsecase) Join(ctx context.Context, groupId ID[int64], memb Member) error {
- return nil
- }
- // generateGroupID generates a new group id.
- func generateGroupID() ID[int64] {
- node, err := snowflake.NewNode(int64(os.Getgid()))
- if err != nil {
- return ID[int64]{id: 0}
- }
- return ID[int64]{id: node.Generate().Int64()}
- }
- // NewGroupUsecase creates a new group usecase.
- func NewGroupUsecase(c *conf.Server, log *zaplog.Logger, groupRepo GroupRepo) *GroupUsecase {
- return &GroupUsecase{
- c: c,
- log: log,
- groupRepo: groupRepo,
- }
- }
|