package service import ( "errors" "strconv" "time" "videoplayer/dao" "videoplayer/worker" ) func CreateGeneralMessageService(from_id, to_id, msg_type int, content string) (error, uint) { // 业务逻辑 var err error var id uint switch msg_type { case 1: //判断是否是好友 friend := dao.FindFriend(from_id, to_id) if len(friend) == 0 { return errors.New("not a friend"), 0 } err, id = dao.CreateSimpleMessage(from_id, to_id, content) res := worker.GetRedis("user_" + strconv.Itoa(to_id) + "_status_v2") if res == "1" { //在线,存入redis worker.PushRedisListWithExpire("user_"+strconv.Itoa(to_id)+"_msg_ids", strconv.Itoa(int(id)), time.Second*300) } case 2: err, id = dao.CreateGeneralMessage(from_id, to_id, msg_type, 0, 0, content) case 3: //user := dao.FindUserByID(to_id) // 系统消息,需要管理员权限 err, id = dao.CreateGeneralMessage(from_id, to_id, msg_type, 0, 0, content) case 4: res, _ := dao.GetMsgUserByIndex(from_id, to_id, 4, 1, 0) if len(res) > 0 { // 已经有会话记录,返回会话id return nil, res[0].ID } err, id = dao.CreateGeneralMessage(from_id, to_id, msg_type, 0, 0, content) case 5: res, _ := dao.GetMsgUserByIndex(from_id, to_id, 5, 1, 0) if len(res) > 0 { // 已经有会话记录 return errors.New("already have a conversation"), 0 } //邀请加入群聊请求 err, id = dao.CreateGeneralMessage(from_id, to_id, msg_type, 0, from_id, content) default: // 未知消息类型 err = errors.New("unknown message type") } return err, id } func GetMsgUserByIndexService(from_id, to_id, index, msq_type, from_user_id int) ([]dao.Message, error) { // 业务逻辑 if index <= 0 || index > 100 { return nil, errors.New("index out of range") } if msq_type == 4 { from_id = from_user_id } msgs, err := dao.GetMsgUserByIndex(from_id, to_id, msq_type, index, 0) return msgs, err } // AddFriendService 通过消息id添加好友,和加入群聊 // id 消息id // from_user_id 发送消息的用户id // to_user_id 接收消息的用户id,及接受用户id func AddFriendService(id, from_user_id, to_user_id int) error { // 业务逻辑 res := dao.FindMessageByID(uint(id)) if res[0].FromUserID == to_user_id && res[0].ToUserID == from_user_id { friend := dao.FindFriend(from_user_id, to_user_id) if len(friend) > 0 { return errors.New("already a friend") } dao.UpdateMessageStatus(res[0].ID, 1) return dao.AddFriend(from_user_id, to_user_id) } else if res[0].ToUserID == from_user_id && res[0].GroupID == to_user_id { //加入群聊 //查看是否已经加入 groupUser := dao.FindGroupUser(from_user_id, to_user_id) if len(groupUser) > 0 { return errors.New("already in the group") } err := dao.JoinGroup(groupUser[0].GroupID, to_user_id) if err != nil { return err } err = dao.UpdateMessageStatus(res[0].ID, 1) return err } else { return errors.New("no such message,cannot add friend") } } // CreateGroup 创建群聊 // groupName 群聊名称 // groupInfo 群聊信息 // groupType 群聊类型 // groupIcon 群聊图标 // user_id 创建群的用户id func CreateGroup(groupName, groupInfo, groupType, groupIcon string, user_id int) (error, uint) { // 业务逻辑 err, id := dao.CreateGroup(groupName, groupInfo, groupType, groupIcon, user_id) return err, id }