Commit 89a807b7 by Li Feifei

Merge branch 'develop' of http://gitlab.offcncloud.com/lff58407/im-microservice into develop

parents 03d51449 f0deae1c
......@@ -14,10 +14,10 @@ const (
cr_table_name = "im_chat_room_user"
)
//查询房间管理员
func GetChatRoomUserOper(room_id int64, operator string) (db.ImChatRoomUser, error) {
//查询房间创建者
func GetChatRoomUserOper(room_id int64) (db.ImChatRoomUser, error) {
var r_user db.ImChatRoomUser
err := db.MysqlClient.QueryTable(cr_table_name).Filter("room_id", room_id).Filter("operator", operator).One(&r_user)
err := db.MysqlClient.QueryTable(cr_table_name).Filter("room_id", room_id).Filter("role", 0).One(&r_user)
if err != nil {
return r_user, err
}
......@@ -43,7 +43,7 @@ func AddChatRoomUser(room_id int64, accid string, oper bool) (db.ImChatRoomUser,
r_user.Createtime = helper.GetNowTime()
if oper == true {
r_user.Operator = accid
r_user.Role = 1
r_user.Role = 0
}
_, err := db.MysqlClient.Insert(&r_user)
if err != nil {
......@@ -53,18 +53,17 @@ func AddChatRoomUser(room_id int64, accid string, oper bool) (db.ImChatRoomUser,
}
//设置用户
func SetChatRoomUser(room_id int64, accid string, role int64) (db.ImChatRoomUser, error) {
var r_user db.ImChatRoomUser
func SetChatRoomUser(in *pb.RoomUserSetRoleRequest) error {
orm_params := make(orm.Params)
orm_params["role"] = role
orm_params["role"] = in.GetRole()
orm_params["operator"] = in.GetOperator()
orm_params["updatetime"] = helper.GetNowTime()
res, err := db.MysqlClient.QueryTable(cr_table_name).Filter("room_id", room_id).Filter("accid", accid).Update(orm_params)
res, err := db.MysqlClient.QueryTable(cr_table_name).Filter("room_id", in.GetRoomId()).Filter("accid", in.GetAccid()).Update(orm_params)
if res != 1 {
err = errors.New("没有查询到任何数据")
return r_user, err
err = errors.New("修改数据失败")
return err
}
r_user, _ = GetChatRoomUser(room_id, accid)
return r_user, nil
return nil
}
//获取房间用户列表
......
......@@ -3,7 +3,8 @@ package im_chat_room_user
import (
"context"
"im-microservice/db"
"im-microservice/helper"
//"im-microservice/helper"
"im-microservice/pb"
"google.golang.org/grpc/status"
......@@ -13,43 +14,18 @@ type ChatRoomUserServer struct {
pb.UnimplementedChatRoomUserServer
}
type RoomUserOperator struct {
RoomId int64 `validate:"required"`
Operator string `validate:"required"`
}
type ChatRoomUser struct {
RoomId int64 `validate:"required"`
Accid string `validate:"required"`
}
type ChatRoomUserRole struct {
RoomId int64 `validate:"required"`
Operator string `validate:"required"`
Accid string `validate:"required"`
Role int64 `validate:"required,numeric"`
}
//添加管理员
//添加创建者
func (c *ChatRoomUserServer) AddOperator(ctx context.Context, in *pb.RoomUserAddOpeRequest) (reply *pb.RoomUserReply, err error) {
roomUserOperator := &RoomUserOperator{
RoomId: in.GetRoomId(),
Operator: in.GetOperator(),
}
//验证参数
if err = helper.Valiator(roomUserOperator); err != nil {
return
}
//查询房间是否已经添加过了
if r_user, _ := GetChatRoomUserOper(roomUserOperator.RoomId, roomUserOperator.Operator); r_user.Operator != "" {
if r_user, _ := GetChatRoomUserOper(in.GetRoomId()); r_user.Accid != "" {
err = status.Error(20438, "该聊天室已存在管理员")
return
}
//添加管理员
r_user, err := AddChatRoomUser(roomUserOperator.RoomId, roomUserOperator.Operator, true)
//添加创建者
r_user, err := AddChatRoomUser(in.GetRoomId(), in.GetOperator(), true)
if err != nil {
err = status.Error(500, "添加管理员失败")
err = status.Error(500, "添加创建者失败")
return
}
reply = &pb.RoomUserReply{}
......@@ -62,22 +38,14 @@ func (c *ChatRoomUserServer) AddOperator(ctx context.Context, in *pb.RoomUserAdd
//添加普通用户
func (c *ChatRoomUserServer) ChatRoomUserAdd(ctx context.Context, in *pb.RoomUserAddRequest) (reply *pb.RoomUserReply, err error) {
chatRoomUser := &ChatRoomUser{
RoomId: in.GetRoomId(),
Accid: in.GetAccid(),
}
//验证参数
if err = helper.Valiator(chatRoomUser); err != nil {
return
}
//查询是否已经有了
if r_user, _ := GetChatRoomUser(chatRoomUser.RoomId, chatRoomUser.Accid); r_user.Accid != "" {
if r_user, _ := GetChatRoomUser(in.GetRoomId(), in.GetAccid()); r_user.Accid != "" {
err = status.Error(20438, "聊天室已存在该用户")
return
}
//添加用户
r_user, err := AddChatRoomUser(chatRoomUser.RoomId, chatRoomUser.Accid, false)
r_user, err := AddChatRoomUser(in.GetRoomId(), in.GetAccid(), false)
if err != nil {
err = status.Error(500, "聊天室添加用户失败")
return
......@@ -91,57 +59,55 @@ func (c *ChatRoomUserServer) ChatRoomUserAdd(ctx context.Context, in *pb.RoomUse
//设置用户角色
func (c *ChatRoomUserServer) ChatRoomUserSetRole(ctx context.Context, in *pb.RoomUserSetRoleRequest) (reply *pb.RoomUserReply, err error) {
setRole := &ChatRoomUserRole{
RoomId: in.GetRoomId(),
Operator: in.GetOperator(),
Accid: in.GetAccid(),
Role: in.GetRole(),
}
if err = helper.Valiator(setRole); err != nil {
return
}
if setRole.Role > 4 || setRole.Role < 1 {
err = status.Error(401, "聊天权限超出异常")
return
}
//查看是否该房间操作者
_, err = GetChatRoomUserOper(setRole.RoomId, setRole.Operator)
//获取操作者信息
o_user, err := GetChatRoomUser(in.GetRoomId(), in.GetOperator())
if err != nil {
err = status.Error(403, "不是该聊天室操作者")
err = status.Error(404, "该操作者不存在")
return
}
switch in.GetRole() {
//设为管理员
case 1:
if o_user.Role != 0 {
err = status.Error(403, "不是创建者不能设置管理员")
return
}
default:
if o_user.Role > 1 {
err = status.Error(403, "没有操作权限")
return
}
}
//查询该用户是否存在
_, err = GetChatRoomUser(setRole.RoomId, setRole.Accid)
check_u, err := GetChatRoomUser(in.GetRoomId(), in.GetAccid())
if err != nil {
err = status.Error(404, "不是该聊天室用户")
return
}
if check_u.Role == in.GetRole() {
err = status.Error(417, "已经是该种角色了,不用重复设置")
return
}
//设置权限
r_user, err := SetChatRoomUser(setRole.RoomId, setRole.Accid, setRole.Role)
err = SetChatRoomUser(in)
if err != nil {
return
}
reply = &pb.RoomUserReply{}
reply.RoomId = r_user.RoomId
reply.Operator = r_user.Operator
reply.Accid = r_user.Accid
reply.Role = r_user.Role
reply.RoomId = check_u.RoomId
reply.Operator = in.GetOperator()
reply.Accid = check_u.Accid
reply.Role = in.GetRole()
return
}
//获取单个用户
func (c *ChatRoomUserServer) ChatRoomUserOne(ctx context.Context, in *pb.RoomUserOneRequest) (reply *pb.RoomUserOneReply, err error) {
chatRoomUser := &ChatRoomUser{
RoomId: in.GetRoomId(),
Accid: in.GetAccid(),
}
//验证参数
if err = helper.Valiator(chatRoomUser); err != nil {
return
}
c_user, err := GetChatRoomUser(chatRoomUser.RoomId, chatRoomUser.Accid)
c_user, err := GetChatRoomUser(in.GetRoomId(), in.GetAccid())
if err != nil {
return
}
......@@ -185,11 +151,7 @@ func (c *ChatRoomUserServer) ChatRoomUserList(ctx context.Context, in *pb.RoomUs
//删除
func (c *ChatRoomUserServer) ChatRoomUserDel(ctx context.Context, in *pb.RoomUserOneRequest) (reply *pb.RoomUserDelReply, err error) {
delRoomUser := &ChatRoomUser{
RoomId: in.GetRoomId(),
Accid: in.GetAccid(),
}
if err = DelChatRoomUser(delRoomUser.RoomId, delRoomUser.Accid); err != nil {
if err = DelChatRoomUser(in.GetRoomId(), in.GetAccid()); err != nil {
return
}
reply = &pb.RoomUserDelReply{}
......
......@@ -38,11 +38,6 @@ func (u *ImUserServer) ImUserRegister(ctx context.Context, in *pb.ImUserRequest)
Code: in.GetCode(),
}
// 参数验证是否合法
if err = helper.Valiator(imUser); err != nil {
return
}
// 从redis获取短信验证码
cache_code, err := helper.GetCode(imUser.Mobile)
if err != nil {
......@@ -78,22 +73,17 @@ func (u *ImUserServer) ImUserLogin(ctx context.Context, in *pb.ImUserRequest) (r
Platform: in.GetPlatform(),
}
// // 参数验证是否合法
// if err = helper.Valiator(imUser); err != nil {
// return
// }
// // 从redis获取短信验证码
// cache_code, err := helper.GetCode(imUser.Mobile)
// if err != nil {
// return
// }
// 从redis获取短信验证码
cache_code, err := helper.GetCode(imUser.Mobile)
if err != nil {
return
}
// //对比验证码
// if cache_code != imUser.Code {
// err = status.Error(302, "验证码不匹配")
// return
// }
//对比验证码
if cache_code != imUser.Code {
err = status.Error(302, "验证码不匹配")
return
}
reply = &pb.ImUserReply{}
c_user, _ := GetImUserByMobile(imUser.Mobile)
if c_user.Accid == "" {
......@@ -117,10 +107,6 @@ func (u *ImUserServer) ImUserLoginOut(ctx context.Context, in *pb.ImUserOutReque
Accid: in.GetAccid(),
Platform: in.GetPlatform(),
}
// 参数验证是否合法
if err = helper.Valiator(imUserOut); err != nil {
return
}
reply = &pb.ImUserSetReply{}
c_user, _ := GetImUserByAccid(imUserOut.Accid)
......@@ -141,6 +127,17 @@ func (u *ImUserServer) ImUserForbiddenWords(ctx context.Context, in *pb.ImUserSe
if in.GetMute() == true {
mute = 1
}
//检测该用户
c_user, err := GetImUserByAccid(in.GetAccid())
if err != nil {
err = status.Error(404, "该用户不存在")
return
}
if c_user.MuteEstoppel == mute {
err = status.Error(417, "请勿重复操作")
return
}
m := make(map[string]interface{})
m["mute_estoppel"] = mute
if res, _ := UpdateImUser(in.GetAccid(), m); res != 1 {
......@@ -157,6 +154,17 @@ func (u *ImUserServer) ImUserForbiddenAV(ctx context.Context, in *pb.ImUserSetRe
if in.GetMute() == true {
mute = 1
}
//检测该用户
c_user, err := GetImUserByAccid(in.GetAccid())
if err != nil {
err = status.Error(404, "该用户不存在")
return
}
if c_user.MuteAudioVideo == mute {
err = status.Error(417, "请勿重复操作")
return
}
m := make(map[string]interface{})
m["mute_audio_video"] = mute
if res, _ := UpdateImUser(in.GetAccid(), m); res != 1 {
......@@ -173,10 +181,7 @@ func (u *ImUserServer) ImUserOne(ctx context.Context, in *pb.ImUserOneRequest) (
imUserId := &ImUserQ{
Accid: in.GetAccid(),
}
// 参数验证是否合法
if err = helper.Valiator(imUserId); err != nil {
return
}
reply = &pb.ImUserOneReply{}
c_user, err := GetImUserByAccid(imUserId.Accid)
if err != nil {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment