create messagegroup

This commit is contained in:
苏尹岚
2020-10-22 09:41:18 +08:00
parent bbf527d419
commit bd1ae5558c
6 changed files with 101 additions and 31 deletions

View File

@@ -127,17 +127,16 @@ func GetOperateEvents(ctx *jxcontext.Context, name string, apiFunctions []string
return pageInfo, err
}
func CreateMessageGroup(ctx *jxcontext.Context, userID, userID2 string) (messageGroupResult *dao.GetMessageGroupsResult, err error) {
func CreateMessageGroup(ctx *jxcontext.Context, userID, userID2, groupName string, dividePercentage int) (messageGroupResult *dao.GetMessageGroupsResult, err error) {
var (
db = dao.GetDB()
groupID int
)
if userID2 != "" {
messageGroups, err := dao.GetMessageGroups(db, userID, model.GroupMemberTypeNormal, userID2)
if len(messageGroups) > 0 && len(messageGroups[0].MessageGroupMembers) == 0 {
messageGroups, err := dao.GetMessageGroups(db, userID, model.GroupTypeSingle, true, userID2)
if len(messageGroups) > 0 && len(messageGroups[0].MessageGroupMembers) > 0 {
return messageGroups[0], err
}
fmt.Println(utils.Format4Output(messageGroups, false))
user, err := dao.GetUserByID(db, "user_id", userID2)
if err != nil {
return nil, err
@@ -156,9 +155,9 @@ func CreateMessageGroup(ctx *jxcontext.Context, userID, userID2 string) (message
}
}
messageGroup := &model.MessageGroup{
GroupID: groupID,
UserID: userID,
Name: user.Name,
GroupID: groupID,
UserID: userID,
// Name: user.Name,
Type: model.GroupTypeSingle,
MaxCount: 2,
}
@@ -172,9 +171,52 @@ func CreateMessageGroup(ctx *jxcontext.Context, userID, userID2 string) (message
dao.CreateEntity(db, messageGroup)
dao.CreateEntity(db, messageGroupMember)
if data, err := json.Marshal(messageGroup); err == nil {
json.Unmarshal(data, &messageGroup)
json.Unmarshal(data, &messageGroupResult)
messageGroupResult.Name = user.Name
messageGroupResult.MessageGroupMembers = append(messageGroupResult.MessageGroupMembers, messageGroupMember)
}
} else {
userMembers, err := dao.GetUserMember(db, userID, model.MemberTypeNormal)
if err != nil {
return nil, err
}
if len(userMembers) == 0 {
return nil, fmt.Errorf("抱歉,只有会员才能创建群聊!")
}
messageGroup := &model.MessageGroup{
GroupID: groupID,
UserID: userID,
Name: groupName,
Type: model.GroupTypeMulit,
MaxCount: 50,
DividePercentage: dividePercentage,
}
dao.WrapAddIDCULDEntity(messageGroup, ctx.GetUserName())
dao.CreateEntity(db, messageGroup)
messageGroupResult.MessageGroup = *messageGroup
}
return messageGroupResult, err
}
func GetMessageGroupByUser(ctx *jxcontext.Context, userID string) (messageGroupResult []*dao.GetMessageGroupsResult, err error) {
var (
db = dao.GetDB()
)
messageGroups, err := dao.GetMessageGroups(db, userID, 0, false, "")
for _, v := range messageGroups {
var messageMemberGroups []*model.MessageGroupMember
sql := `
SELECT * FROM message_member_group WHERE group_id = ?
`
sqlParams := []interface{}{v.GroupID}
if err = dao.GetRows(db, &messageMemberGroups, sql, sqlParams); err == nil {
if v.Type == model.GroupTypeSingle {
user, err := dao.GetUserByID(db, "user_id", messageMemberGroups[0].MemberUserID)
if err == nil {
v.Name = user.Name
}
}
}
}
return messageGroups, err
}

View File

@@ -176,7 +176,7 @@ type GetMessageGroupsResult struct {
MessageGroupMembers []*model.MessageGroupMember `json:"messageGroupMembers"`
}
func GetMessageGroups(db *DaoDB, userID string, groupType int, userID2 string) (messageGroupsResult []*GetMessageGroupsResult, err error) {
func GetMessageGroups(db *DaoDB, userID string, groupType int, isMember bool, userID2 string) (messageGroupsResult []*GetMessageGroupsResult, err error) {
sql := `
SELECT *
FROM message_group
@@ -192,18 +192,20 @@ func GetMessageGroups(db *DaoDB, userID string, groupType int, userID2 string) (
sqlParams = append(sqlParams, groupType)
}
if err = GetRows(db, &messageGroupsResult, sql, sqlParams); err == nil {
for _, v := range messageGroupsResult {
var messageGroupMembers []*model.MessageGroupMember
sql2 := `
SELECT * FROM message_group_member WHERE group_id = ?
`
sqlParams2 := []interface{}{v.GroupID}
if userID2 != "" {
sql2 += ` AND member_user_id = ?`
sqlParams2 = append(sqlParams2, userID2)
}
if err = GetRows(db, &messageGroupMembers, sql2, sqlParams2); err == nil {
v.MessageGroupMembers = messageGroupMembers
if isMember {
for _, v := range messageGroupsResult {
var messageGroupMembers []*model.MessageGroupMember
sql2 := `
SELECT * FROM message_group_member WHERE group_id = ?
`
sqlParams2 := []interface{}{v.GroupID}
if userID2 != "" {
sql2 += ` AND member_user_id = ?`
sqlParams2 = append(sqlParams2, userID2)
}
if err = GetRows(db, &messageGroupMembers, sql2, sqlParams2); err == nil {
v.MessageGroupMembers = messageGroupMembers
}
}
}
}

View File

@@ -74,11 +74,12 @@ func (*ImMessageRecord) TableIndex() [][]string {
type MessageGroup struct {
ModelIDCULD
GroupID int `orm:"column(group_id)" json:"groupID"` //组ID
UserID string `orm:"size(48);column(user_id)" json:"userID"` //创建组的userID
Name string `json:"name"` //组名
Type int `json:"type"` //组类型1为单聊2为群聊
MaxCount int `json:"maxCount"` //最大人数
GroupID int `orm:"column(group_id)" json:"groupID"` //组ID
UserID string `orm:"size(48);column(user_id)" json:"userID"` //创建组的userID
Name string `json:"name"` //组名
Type int `json:"type"` //组类型1为单聊2为群聊
MaxCount int `json:"maxCount"` //最大人数
DividePercentage int `json:"dividePercentage"` //分成比例
}
func (*MessageGroup) TableIndex() [][]string {

View File

@@ -189,15 +189,31 @@ func (c *EventController) GetImMessageRecord() {
// @Title 创建聊天组
// @Description 创建聊天组
// @Param token header string true "认证token"
// @Param userID formData string true "创建者id"
// @Param userID2 formData string false "被拉的id 如果userID2为空就默认为是创建的群聊"
// @Param token header string true "认证token"
// @Param userID formData string true "创建者id"
// @Param userID2 formData string false "被拉的id 如果userID2为空就默认为是创建的群聊"
// @Param name formData string false "如果是群聊,则要传入群名"
// @Param dividePercentage formData int false "如果是群聊,则要传入分成比例"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /CreateMessageGroup [post]
func (c *EventController) CreateMessageGroup() {
c.callCreateMessageGroup(func(params *tEventCreateMessageGroupParams) (retVal interface{}, errCode string, err error) {
retVal, err = event.CreateMessageGroup(params.Ctx, params.UserID, params.UserID2)
retVal, err = event.CreateMessageGroup(params.Ctx, params.UserID, params.UserID2, params.Name, params.DividePercentage)
return retVal, "", err
})
}
// @Title 查询某个用户所有聊天组
// @Description 查询某个用户所有聊天组
// @Param token header string true "认证token"
// @Param userID formData string true "userid"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetMessageGroupByUser [get]
func (c *EventController) GetMessageGroupByUser() {
c.callGetMessageGroupByUser(func(params *tEventGetMessageGroupByUserParams) (retVal interface{}, errCode string, err error) {
retVal, err = event.GetMessageGroupByUser(params.Ctx, params.UserID)
return retVal, "", err
})
}

View File

@@ -13,7 +13,6 @@ import (
// 导入缺省订单调度器
"git.rosy.net.cn/jx-callback/business/jxutils/tasks"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/beegodb"
@@ -22,6 +21,7 @@ import (
_ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/mobile"
_ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/password"
_ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin"
"git.rosy.net.cn/jx-callback/business/jxutils/tasks"
_ "git.rosy.net.cn/jx-callback/routers"
)

View File

@@ -151,6 +151,15 @@ func init() {
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:EventController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:EventController"],
beego.ControllerComments{
Method: "GetMessageGroupByUser",
Router: `/GetMessageGroupByUser`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:EventController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:EventController"],
beego.ControllerComments{
Method: "GetWeixinUnlimited",