Skip to content

Commit 38c431c

Browse files
committed
dissolve group api
1 parent 08259f5 commit 38c431c

File tree

4 files changed

+37
-0
lines changed

4 files changed

+37
-0
lines changed

admins/apis/group.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/juggleim/commons/errs"
99
"github.com/juggleim/commons/responses"
1010
"github.com/juggleim/commons/tools"
11+
"github.com/juggleim/jugglechat-server/admins/apis/models"
1112
"github.com/juggleim/jugglechat-server/admins/services"
1213
)
1314

@@ -44,3 +45,17 @@ func QryGroups(ctx *gin.Context) {
4445
}
4546
responses.AdminSuccessHttpResp(ctx, grps)
4647
}
48+
49+
func DissolveGroup(ctx *gin.Context) {
50+
var req models.GroupIds
51+
if err := ctx.ShouldBindJSON(&req); err != nil || req.AppKey == "" {
52+
responses.AdminErrorHttpResp(ctx, errs.AdminErrorCode_ParamError)
53+
return
54+
}
55+
code := services.DissolveGroups(ctxs.ToCtx(ctx), &req)
56+
if code != errs.AdminErrorCode_Success {
57+
responses.AdminErrorHttpResp(ctx, code)
58+
return
59+
}
60+
responses.AdminSuccessHttpResp(ctx, nil)
61+
}

admins/apis/models/group.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,8 @@ type Groups struct {
1414
Items []*Group `json:"items"`
1515
Offset string `json:"offset,omitempty"`
1616
}
17+
18+
type GroupIds struct {
19+
AppKey string `json:"app_key"`
20+
GroupIds []string `json:"group_ids`
21+
}

admins/routers/router.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ func Route(group *gin.RouterGroup) *gin.RouterGroup {
201201

202202
//groups
203203
group.GET("/apps/groups/list", apis.QryGroups)
204+
group.POST("/apps/groups/dissolve", apis.DissolveGroup)
204205

205206
//convers
206207
group.GET("/apps/convers/list", apis.QryConversations)

admins/services/groupservice.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55

66
"github.com/juggleim/commons/errs"
7+
"github.com/juggleim/commons/imsdk"
78
"github.com/juggleim/commons/tools"
89
apimodels "github.com/juggleim/jugglechat-server/admins/apis/models"
910
"github.com/juggleim/jugglechat-server/storages"
@@ -65,3 +66,18 @@ func QryGroupInfo(appkey, groupId string) *apimodels.Group {
6566
GroupPortrait: grp.GroupPortrait,
6667
}
6768
}
69+
70+
func DissolveGroups(ctx context.Context, req *apimodels.GroupIds) errs.AdminErrorCode {
71+
appkey := req.AppKey
72+
sdk := imsdk.GetImSdk(appkey)
73+
storage := storages.NewGroupStorage()
74+
memberStorage := storages.NewGroupMemberStorage()
75+
for _, groupId := range req.GroupIds {
76+
storage.Delete(appkey, groupId)
77+
memberStorage.DeleteByGroupId(appkey, groupId)
78+
if sdk != nil {
79+
sdk.DissolveGroup(groupId)
80+
}
81+
}
82+
return errs.AdminErrorCode_Success
83+
}

0 commit comments

Comments
 (0)