mic_change.go 2.64 KB
Newer Older
hujiebin's avatar
hujiebin committed
1 2 3
package event_s

import (
hujiebin's avatar
hujiebin committed
4
	"encoding/json"
hujiebin's avatar
hujiebin committed
5 6 7
	"git.hilo.cn/hilo-common/domain"
	"git.hilo.cn/hilo-common/rpc"
	"hilo-group/domain/event/group_ev"
hujiebin's avatar
hujiebin committed
8
	"hilo-group/domain/model/group_m"
hujiebin's avatar
hujiebin committed
9 10 11 12 13 14 15 16 17 18
	"hilo-group/myerr/bizerr"
)

// 用户进房后推送mic信息
func GroupInMicChangeEvent() {
	group_ev.AddTxGroupInEventAsync(func(model *domain.Model, event interface{}) error {
		e, ok := event.(*group_ev.TxGroupInEvent)
		if !ok {
			return bizerr.InvalidParameter
		}
hujiebin's avatar
hujiebin committed
19
		return MicAllRPush(model, e.GroupId, e.UserId, e.ExternalId)
hujiebin's avatar
hujiebin committed
20 21
	})
}
hujiebin's avatar
hujiebin committed
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

func MicAllRPush(model *domain.Model, txGroupUid string, userId uint64, externalId string) error {
	model.Log.Infof("MicChangeRPush MicAllRPush begin groupUuid:%v, externalId:%v", txGroupUid, externalId)

	imGroupId, err := group_m.ToImGroupId(model, txGroupUid)
	if err != nil {
		model.Log.Errorf("ToImGroupId fail:%v", err)
		return err
	}
	//
	micContents, err := group_m.GetMicAllContent(model, imGroupId)
	if err != nil {
		model.Log.Errorf("MicChangeRPush MicAllRPush getMicAllContent  err:%+v, micContents:%v groupUuid:%v, externalId:%v", err, micContents, txGroupUid, externalId)
		return err
	}
	for _, micContent := range micContents {
		//麦上是默认值,就不用推
		if micContent.Forbid == false && micContent.User == nil && micContent.AgoraId == 0 && micContent.Lock == false && micContent.ExternalId == "" && micContent.MicForbid == false {
			model.Log.Infof("MicChangeRPush MicAllRPush default micContent:%v, groupUuid:%v, externalId:%v, micContent:%+v", micContent, txGroupUid, externalId, micContent)
			continue
		}
		micContentStr, err := json.Marshal(micContent)
		if err != nil {
			continue
		}
hujiebin's avatar
hujiebin committed
47 48 49 50
		tmpMicUser := new(group_m.MicUserData)
		if micContent.User != nil {
			tmpMicUser = micContent.User
		}
hujiebin's avatar
hujiebin committed
51
		if err := rpc.SendSocketMicChange(userId, externalId, txGroupUid, uint32(micContent.I), micContent.Lock, micContent.Forbid, micContent.MicForbid, micContent.AgoraId,
hujiebin's avatar
hujiebin committed
52 53
			tmpMicUser.Id, tmpMicUser.ExternalId, tmpMicUser.Avatar, tmpMicUser.Nick, uint32(tmpMicUser.Sex), tmpMicUser.Code, tmpMicUser.IsVip, uint32(tmpMicUser.NobleLeave),
			tmpMicUser.HeadwearPicUrl, tmpMicUser.HeadwearEffectUrl, tmpMicUser.HeadwearReverseEffectUrl, uint32(tmpMicUser.SvipLevel), tmpMicUser.MicEffect, tmpMicUser.HeadwearIcon); err != nil {
hujiebin's avatar
hujiebin committed
54
			model.Log.Errorf("MicAllRPush err:%+v, groupUuid:%v, externalId:%v, micContent:%+v", err, txGroupUid, externalId, string(micContentStr))
hujiebin's avatar
hujiebin committed
55 56
		} else {
			model.Log.Infof("MicChangeRPush MicAllRPush Marshal micContent, groupUuid:%v, externalId:%v, micContent:%+v", txGroupUid, externalId, string(micContentStr))
hujiebin's avatar
hujiebin committed
57 58 59 60 61
		}
	}
	model.Log.Infof("MicAllRPush end groupUuid:%v, externalId:%v", txGroupUid, externalId)
	return nil
}