diff --git a/business/jxstore/event/event.go b/business/jxstore/event/event.go index 1611de174..c4fca9423 100644 --- a/business/jxstore/event/event.go +++ b/business/jxstore/event/event.go @@ -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 +} diff --git a/business/model/dao/event.go b/business/model/dao/event.go index 3aa079940..c7a678d7c 100644 --- a/business/model/dao/event.go +++ b/business/model/dao/event.go @@ -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 + } } } } diff --git a/business/model/message.go b/business/model/message.go index ee9a49be7..dd3ce41fa 100644 --- a/business/model/message.go +++ b/business/model/message.go @@ -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 { diff --git a/controllers/event.go b/controllers/event.go index 0850dcb1a..e972294bc 100644 --- a/controllers/event.go +++ b/controllers/event.go @@ -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 }) } diff --git a/main.go b/main.go index db6338b80..87cdb658b 100644 --- a/main.go +++ b/main.go @@ -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" ) diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index d99ee519b..03708593f 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -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",