Skip to content

Commit 25e1135

Browse files
committed
opt
1 parent 56f6b31 commit 25e1135

File tree

4 files changed

+111
-45
lines changed

4 files changed

+111
-45
lines changed

apis/models/group.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ const (
105105
)
106106

107107
type GroupInviteResp struct {
108+
Reason GrpInviteResultReason `json:"reason"`
108109
Results map[string]GrpInviteResultReason `json:"results"`
109110
}
110111

go.mod

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ require (
6969
github.com/jinzhu/inflection v1.0.0 // indirect
7070
github.com/jinzhu/now v1.1.5 // indirect
7171
github.com/json-iterator/go v1.1.12 // indirect
72-
github.com/juggleim/commons v1.0.14
72+
github.com/juggleim/commons v1.0.15
7373
github.com/klauspost/cpuid/v2 v2.2.10 // indirect
7474
github.com/leodido/go-urn v1.4.0 // indirect
7575
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
@@ -93,5 +93,3 @@ require (
9393
google.golang.org/protobuf v1.36.6
9494
gopkg.in/yaml.v3 v3.0.1
9595
)
96-
97-
replace github.com/juggleim/commons v1.0.14 => /Users/gxg/Documents/gitee/commons

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,8 @@ github.com/juggleim/commons v1.0.13 h1:GBDjH1iDmm2phzn+8gtcssRJKNvGB/NOtTf3DRpfM
194194
github.com/juggleim/commons v1.0.13/go.mod h1:1bp7TnNj4j6Bju2No+jPRUQKjOeC6Boopi5uDoJ0+Lo=
195195
github.com/juggleim/commons v1.0.14 h1:HKc64BdSgi4N3x+rR803hac2LaAiPY+1D0v5P6qeg9g=
196196
github.com/juggleim/commons v1.0.14/go.mod h1:1bp7TnNj4j6Bju2No+jPRUQKjOeC6Boopi5uDoJ0+Lo=
197+
github.com/juggleim/commons v1.0.15 h1:1USvy3MONpxpEdd7FXtkKP/V1Q6/JgnB8VU5KmhN2fU=
198+
github.com/juggleim/commons v1.0.15/go.mod h1:1bp7TnNj4j6Bju2No+jPRUQKjOeC6Boopi5uDoJ0+Lo=
197199
github.com/juggleim/imserver-sdk-go v1.0.7 h1:ddEVMg9+01KBPRo7r933AIwBZVEUXNmtpusZvD37Ryo=
198200
github.com/juggleim/imserver-sdk-go v1.0.7/go.mod h1:xdxsGeW0b4GOYJvKJwnaU04Z+jGaUSrBvzeSbNvNOFk=
199201
github.com/juggleim/imserver-sdk-go v1.0.8 h1:yJTbScsH4WV2eUY35IqmwaqA0OW2q3sIWiHxlMudqsc=

services/groupservice.go

Lines changed: 107 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,51 @@ func QryGroupInfo(ctx context.Context, groupId string) (errs.IMErrorCode, *apimo
147147
return errs.IMErrorCode_SUCCESS, ret
148148
}
149149

150+
func GetGroupSettings(ctx context.Context, groupId string) *apimodels.GroupManagement {
151+
ret := &apimodels.GroupManagement{
152+
GroupEditMsgRight: utils.IntPtr(7),
153+
GroupAddMemberRight: utils.IntPtr(7),
154+
GroupMentionAllRight: utils.IntPtr(7),
155+
GroupTopMsgRight: utils.IntPtr(7),
156+
GroupSendMsgRight: utils.IntPtr(7),
157+
GroupSetMsgLifeRight: utils.IntPtr(7),
158+
}
159+
appkey := ctxs.GetAppKeyFromCtx(ctx)
160+
grpExtStorage := storages.NewGroupExtStorage()
161+
exts, err := grpExtStorage.QryExtFields(appkey, groupId)
162+
if err == nil {
163+
for _, ext := range exts {
164+
if ext.ItemKey == apimodels.AttItemKey_GrpVerifyType {
165+
verifyType := utils.ToInt(ext.ItemValue)
166+
ret.GroupVerifyType = verifyType
167+
} else if ext.ItemKey == apimodels.AttItemKey_HideGrpMsg {
168+
hidGrpMsg := utils.ToInt(ext.ItemValue)
169+
var visible int = 0
170+
if hidGrpMsg > 0 {
171+
visible = 0
172+
} else {
173+
visible = 1
174+
}
175+
ret.GroupHisMsgVisible = *utils.IntPtr(visible)
176+
} else if ext.ItemKey == apimodels.AttItemKey_GrpEditMsgRight {
177+
editMsgRight := utils.ToInt(ext.ItemValue)
178+
ret.GroupEditMsgRight = utils.IntPtr(editMsgRight)
179+
} else if ext.ItemKey == apimodels.AttItemKey_AddMemberRight {
180+
ret.GroupAddMemberRight = utils.IntPtr(utils.ToInt(ext.ItemValue))
181+
} else if ext.ItemKey == apimodels.AttItemKey_MentionAllRight {
182+
ret.GroupMentionAllRight = utils.IntPtr(utils.ToInt(ext.ItemValue))
183+
} else if ext.ItemKey == apimodels.AttItemKey_TopMsgRight {
184+
ret.GroupTopMsgRight = utils.IntPtr(utils.ToInt(ext.ItemValue))
185+
} else if ext.ItemKey == apimodels.AttItemKey_SendMsgRight {
186+
ret.GroupSendMsgRight = utils.IntPtr(utils.ToInt(ext.ItemValue))
187+
} else if ext.ItemKey == apimodels.AttItemKey_SetMsgLifeRight {
188+
ret.GroupSetMsgLifeRight = utils.IntPtr(utils.ToInt(ext.ItemValue))
189+
}
190+
}
191+
}
192+
return ret
193+
}
194+
150195
func CheckGroupMembers(ctx context.Context, req *apimodels.CheckGroupMembersReq) (errs.IMErrorCode, *apimodels.CheckGroupMembersResp) {
151196
appkey := ctxs.GetAppKeyFromCtx(ctx)
152197
ret := &apimodels.CheckGroupMembersResp{
@@ -367,15 +412,13 @@ func GrpInviteMembers(ctx context.Context, req *apimodels.GroupInviteReq) (errs.
367412
Results: make(map[string]apimodels.GrpInviteResultReason),
368413
}
369414
//TODO check grp member exist
370-
//check user's setting
371-
directAddMemberIds := []string{}
372-
for _, memberId := range req.MemberIds {
373-
reason := apimodels.GrpInviteResultReason_InviteSucc
374-
mUserSetting := GetUserSettings(ctx, memberId)
375-
if mUserSetting.GrpVerifyType == apimodels.GrpVerifyType_DeclineGroup {
376-
reason = apimodels.GrpInviteResultReason_InviteDecline
377-
} else if mUserSetting.GrpVerifyType == apimodels.GrpVerifyType_NeedGrpVerify {
378-
storage := storages.NewGrpApplicationStorage()
415+
//check group's setting
416+
grpSettings := GetGroupSettings(ctx, req.GroupId)
417+
if grpSettings.GroupVerifyType == apimodels.GrpVerifyType_DeclineGroup {
418+
results.Reason = apimodels.GrpInviteResultReason_InviteDecline
419+
} else if grpSettings.GroupVerifyType == apimodels.GrpVerifyType_NeedGrpVerify {
420+
storage := storages.NewGrpApplicationStorage()
421+
for _, memberId := range req.MemberIds {
379422
storage.InviteUpsert(models.GrpApplication{
380423
GroupId: req.GroupId,
381424
ApplyType: models.GrpApplicationType_Invite,
@@ -385,42 +428,64 @@ func GrpInviteMembers(ctx context.Context, req *apimodels.GroupInviteReq) (errs.
385428
Status: models.GrpApplicationStatus_Invite,
386429
AppKey: appkey,
387430
})
388-
reason = apimodels.GrpInviteResultReason_InviteSendOut
389-
} else if mUserSetting.GrpVerifyType == apimodels.GrpVerifyType_NoNeedGrpVerify {
390-
directAddMemberIds = append(directAddMemberIds, memberId)
391-
reason = apimodels.GrpInviteResultReason_InviteSucc
392431
}
393-
results.Results[memberId] = reason
394-
}
395-
if len(directAddMemberIds) > 0 {
396-
memberStorage := storages.NewGroupMemberStorage()
397-
items := []models.GroupMember{}
398-
for _, mId := range directAddMemberIds {
399-
items = append(items, models.GroupMember{
400-
GroupId: req.GroupId,
401-
MemberId: mId,
402-
AppKey: appkey,
403-
})
404-
}
405-
memberStorage.BatchCreate(items)
406-
//sync to imserver
407-
if sdk := imsdk.GetImSdk(appkey); sdk != nil {
408-
sdk.GroupAddMembers(juggleimsdk.GroupMembersReq{
409-
GroupId: req.GroupId,
410-
MemberIds: directAddMemberIds,
411-
})
412-
}
413-
//send notify msg
414-
targetUsers := []*apimodels.UserObj{}
415-
for _, memberId := range directAddMemberIds {
416-
targetUsers = append(targetUsers, GetUser(ctx, memberId))
432+
results.Reason = apimodels.GrpInviteResultReason_InviteSendOut
433+
} else {
434+
//check user's setting
435+
directAddMemberIds := []string{}
436+
for _, memberId := range req.MemberIds {
437+
reason := apimodels.GrpInviteResultReason_InviteSucc
438+
mUserSetting := GetUserSettings(ctx, memberId)
439+
if mUserSetting.GrpVerifyType == apimodels.GrpVerifyType_DeclineGroup {
440+
reason = apimodels.GrpInviteResultReason_InviteDecline
441+
} else if mUserSetting.GrpVerifyType == apimodels.GrpVerifyType_NeedGrpVerify {
442+
storage := storages.NewGrpApplicationStorage()
443+
storage.InviteUpsert(models.GrpApplication{
444+
GroupId: req.GroupId,
445+
ApplyType: models.GrpApplicationType_Invite,
446+
RecipientId: memberId,
447+
InviterId: requesterId,
448+
ApplyTime: time.Now().UnixMilli(),
449+
Status: models.GrpApplicationStatus_Invite,
450+
AppKey: appkey,
451+
})
452+
reason = apimodels.GrpInviteResultReason_InviteSendOut
453+
} else if mUserSetting.GrpVerifyType == apimodels.GrpVerifyType_NoNeedGrpVerify {
454+
directAddMemberIds = append(directAddMemberIds, memberId)
455+
reason = apimodels.GrpInviteResultReason_InviteSucc
456+
}
457+
results.Results[memberId] = reason
417458
}
418-
notify := &apimodels.GroupNotify{
419-
Operator: GetUser(ctx, requesterId),
420-
Members: targetUsers,
421-
Type: apimodels.GroupNotifyType_AddMember,
459+
if len(directAddMemberIds) > 0 {
460+
memberStorage := storages.NewGroupMemberStorage()
461+
items := []models.GroupMember{}
462+
for _, mId := range directAddMemberIds {
463+
items = append(items, models.GroupMember{
464+
GroupId: req.GroupId,
465+
MemberId: mId,
466+
AppKey: appkey,
467+
})
468+
}
469+
memberStorage.BatchCreate(items)
470+
//sync to imserver
471+
if sdk := imsdk.GetImSdk(appkey); sdk != nil {
472+
sdk.GroupAddMembers(juggleimsdk.GroupMembersReq{
473+
GroupId: req.GroupId,
474+
MemberIds: directAddMemberIds,
475+
})
476+
}
477+
//send notify msg
478+
targetUsers := []*apimodels.UserObj{}
479+
for _, memberId := range directAddMemberIds {
480+
targetUsers = append(targetUsers, GetUser(ctx, memberId))
481+
}
482+
notify := &apimodels.GroupNotify{
483+
Operator: GetUser(ctx, requesterId),
484+
Members: targetUsers,
485+
Type: apimodels.GroupNotifyType_AddMember,
486+
}
487+
SendGrpNotify(ctx, req.GroupId, notify)
422488
}
423-
SendGrpNotify(ctx, req.GroupId, notify)
424489
}
425490
return errs.IMErrorCode_SUCCESS, results
426491
}

0 commit comments

Comments
 (0)