Commit 263bf26a by 李洪

用户修改

parent 76f8001f
...@@ -56,11 +56,17 @@ type ImUser struct { ...@@ -56,11 +56,17 @@ type ImUser struct {
Accid string Accid string
Appkey string Appkey string
Name string Name string
Icon string
Token string
Sign string
Mobile string Mobile string
Disable int64 Email string
Birth string
Gender int64
Valid int64
MuteEstoppel int64 MuteEstoppel int64
MuteAudioVideo int64 MuteAudioVideo int64
Ext string Ex string
Createtime string Createtime string
Edition string Edition string
} }
......
...@@ -22,7 +22,7 @@ func (fs *ImFriendService) All(ctx context.Context, in *pb.ImFriendListReq) (rep ...@@ -22,7 +22,7 @@ func (fs *ImFriendService) All(ctx context.Context, in *pb.ImFriendListReq) (rep
return return
} }
// 添加用户是否存在 // 添加用户是否存在
if _, err = im_user.GetImUserByAccid(in.Accid); err != nil { if _, err = im_user.GetImUserByAccidAppkey(in.Accid, in.Common.Appkey); err != nil {
err = status.Error(codes.NotFound, "用户不存在") err = status.Error(codes.NotFound, "用户不存在")
return return
} }
...@@ -51,12 +51,12 @@ func (fs *ImFriendService) Add(ctx context.Context, in *pb.ImFriendAddReq) (repl ...@@ -51,12 +51,12 @@ func (fs *ImFriendService) Add(ctx context.Context, in *pb.ImFriendAddReq) (repl
return return
} }
// 添加用户是否存在 // 添加用户是否存在
if _, err = im_user.GetImUserByAccid(in.Accid); err != nil { if _, err = im_user.GetImUserByAccidAppkey(in.Accid, in.Common.Appkey); err != nil {
err = status.Error(codes.NotFound, "用户不存在") err = status.Error(codes.NotFound, "用户不存在")
return return
} }
// 被添加用户存在 // 被添加用户存在
if _, err = im_user.GetImUserByAccid(in.Faccid); err != nil { if _, err = im_user.GetImUserByAccidAppkey(in.Faccid, in.Common.Appkey); err != nil {
err = status.Error(codes.NotFound, "被添加用户不存在") err = status.Error(codes.NotFound, "被添加用户不存在")
return return
} }
......
...@@ -3,7 +3,7 @@ package im_user ...@@ -3,7 +3,7 @@ package im_user
import ( import (
"context" "context"
"im-microservice/db" "im-microservice/db"
"im-microservice/helper"
"im-microservice/pb" "im-microservice/pb"
"google.golang.org/grpc/status" "google.golang.org/grpc/status"
...@@ -31,93 +31,103 @@ type ImUserQ struct { ...@@ -31,93 +31,103 @@ type ImUserQ struct {
} }
//注册 //注册
func (u *ImUserServer) ImUserRegister(ctx context.Context, in *pb.ImUserRequest) (reply *pb.ImUserReply, err error) { func (u *ImUserServer) ImUserRegister(ctx context.Context, in *pb.ImUserRequest) (reply *pb.ImUserRegReply, err error) {
imUser := &ImUser{
Name: in.GetName(),
Mobile: in.GetMobile(),
Code: in.GetCode(),
}
// 从redis获取短信验证码
cache_code, err := helper.GetCode(imUser.Mobile)
if err != nil {
return
}
//对比验证码
if cache_code != imUser.Code {
err = status.Error(302, "验证码不匹配")
return
}
reply = &pb.ImUserReply{}
// 是否已经注册过, 如果已经注册返回用户信息 // 是否已经注册过, 如果已经注册返回用户信息
if c_user, _ := GetImUserByMobile(imUser.Mobile); c_user.Accid != "" { if c_user, _ := GetImUserByAccidAppkey(in.GetAccid(), in.Common.Appkey); c_user.Accid != "" {
err = status.Error(10438, "手机号已注册") err = status.Error(10438, "用户已存在")
return return
} }
// 企业用户注册失败 // 企业用户注册失败
c_user, err := CreateImUser(imUser.Name, imUser.Mobile) c_user, err := CreateImUser(in)
if err != nil { if err != nil {
err = status.Error(500, "注册失败") err = status.Error(500, "注册失败")
return return
} }
reply = &pb.ImUserRegReply{}
reply.Accid = c_user.Accid reply.Accid = c_user.Accid
reply.Name = c_user.Name
reply.Token = c_user.Token
return return
} }
//用户登录 //修改用户信息
func (u *ImUserServer) ImUserLogin(ctx context.Context, in *pb.ImUserRequest) (reply *pb.ImUserReply, err error) { func (u *ImUserServer) ImuserSave(ctx context.Context, in *pb.ImUserRequest) (reply *pb.ImUserSetReply, err error) {
imUser := &ImUser{ //查询用户是否存在
Name: in.GetName(), c_user, _ := GetImUserByAccidAppkey(in.GetAccid(), in.Common.Appkey)
Mobile: in.GetMobile(), if c_user.Token == "" {
Code: in.GetCode(), err = status.Error(404, "用户不存在")
Platform: in.GetPlatform(),
}
// 从redis获取短信验证码
cache_code, err := helper.GetCode(imUser.Mobile)
if err != nil {
return return
} }
//修改
m := make(map[string]interface{})
if in.Name != "" {
m["name"] = in.Name
}
if in.Icon != "" {
m["icon"] = in.Icon
}
if in.Sign != "" {
m["sign"] = in.Sign
}
if in.Email != "" {
m["email"] = in.Email
}
if in.Birth != "" {
m["birth"] = in.Birth
}
if in.Mobile != "" {
m["mobile"] = in.Mobile
}
if in.Gender != 0 {
m["gender"] = in.Gender
}
if in.Ex != "" {
m["ex"] = in.Ex
}
//对比验证码 if res, _ := UpdateImUser(in.GetAccid(), in.Common.Appkey, m); res != 1 {
if cache_code != imUser.Code { err = status.Error(500, "修改用户信息失败")
err = status.Error(302, "验证码不匹配")
return return
} }
reply = &pb.ImUserReply{} reply = &pb.ImUserSetReply{}
c_user, _ := GetImUserByMobile(imUser.Mobile) return
if c_user.Accid == "" { }
//用户登录
func (u *ImUserServer) ImUserLogin(ctx context.Context, in *pb.ImUserLoginRequest) (reply *pb.ImUserRegReply, err error) {
//获取用户信息
c_user, _ := GetImUserByAccidAppkey(in.GetAccid(), in.Common.Appkey)
if c_user.Token == "" {
err = status.Error(404, "用户不存在") err = status.Error(404, "用户不存在")
return return
} }
//更新用户登录时间 //更新用户登录时间
_, err = LoginHandle(c_user.Id, imUser.Platform) _, err = LoginHandle(c_user.Id, in.GetPlatform())
if err != nil { if err != nil {
//err = status.Error(500, "用户登录时间更新失败") //err = status.Error(500, "用户登录时间更新失败")
return return
} }
reply = &pb.ImUserRegReply{}
reply.Token = c_user.Token
reply.Accid = c_user.Accid reply.Accid = c_user.Accid
reply.Name = c_user.Name
return return
} }
//用户退出 //用户退出
func (u *ImUserServer) ImUserLoginOut(ctx context.Context, in *pb.ImUserOutRequest) (reply *pb.ImUserSetReply, err error) { func (u *ImUserServer) ImUserLoginOut(ctx context.Context, in *pb.ImUserLoginRequest) (reply *pb.ImUserSetReply, err error) {
imUserOut := &ImUserQ{ c_user, _ := GetImUserByAccidAppkey(in.GetAccid(), in.Common.Appkey)
Accid: in.GetAccid(),
Platform: in.GetPlatform(),
}
reply = &pb.ImUserSetReply{}
c_user, _ := GetImUserByAccid(imUserOut.Accid)
if c_user.Accid == "" { if c_user.Accid == "" {
err = status.Error(404, "用户不存在") err = status.Error(404, "用户不存在")
return return
} }
_, err = LoginOutHandle(c_user.Id, imUserOut.Platform) _, err = LoginOutHandle(c_user.Id, in.GetPlatform())
if err != nil { if err != nil {
err = status.Error(500, "数据库操作失败")
return return
} }
reply = &pb.ImUserSetReply{}
return reply, nil return reply, nil
} }
...@@ -128,7 +138,7 @@ func (u *ImUserServer) ImUserForbiddenWords(ctx context.Context, in *pb.ImUserSe ...@@ -128,7 +138,7 @@ func (u *ImUserServer) ImUserForbiddenWords(ctx context.Context, in *pb.ImUserSe
mute = 1 mute = 1
} }
//检测该用户 //检测该用户
c_user, err := GetImUserByAccid(in.GetAccid()) c_user, err := GetImUserByAccidAppkey(in.GetAccid(), in.Common.Appkey)
if err != nil { if err != nil {
err = status.Error(404, "该用户不存在") err = status.Error(404, "该用户不存在")
return return
...@@ -140,7 +150,7 @@ func (u *ImUserServer) ImUserForbiddenWords(ctx context.Context, in *pb.ImUserSe ...@@ -140,7 +150,7 @@ func (u *ImUserServer) ImUserForbiddenWords(ctx context.Context, in *pb.ImUserSe
m := make(map[string]interface{}) m := make(map[string]interface{})
m["mute_estoppel"] = mute m["mute_estoppel"] = mute
if res, _ := UpdateImUser(in.GetAccid(), m); res != 1 { if res, _ := UpdateImUser(in.GetAccid(), in.Common.Appkey, m); res != 1 {
err = status.Error(500, "用户禁言失败") err = status.Error(500, "用户禁言失败")
return return
} }
...@@ -155,7 +165,7 @@ func (u *ImUserServer) ImUserForbiddenAV(ctx context.Context, in *pb.ImUserSetRe ...@@ -155,7 +165,7 @@ func (u *ImUserServer) ImUserForbiddenAV(ctx context.Context, in *pb.ImUserSetRe
mute = 1 mute = 1
} }
//检测该用户 //检测该用户
c_user, err := GetImUserByAccid(in.GetAccid()) c_user, err := GetImUserByAccidAppkey(in.GetAccid(), in.Common.Appkey)
if err != nil { if err != nil {
err = status.Error(404, "该用户不存在") err = status.Error(404, "该用户不存在")
return return
...@@ -167,7 +177,7 @@ func (u *ImUserServer) ImUserForbiddenAV(ctx context.Context, in *pb.ImUserSetRe ...@@ -167,7 +177,7 @@ func (u *ImUserServer) ImUserForbiddenAV(ctx context.Context, in *pb.ImUserSetRe
m := make(map[string]interface{}) m := make(map[string]interface{})
m["mute_audio_video"] = mute m["mute_audio_video"] = mute
if res, _ := UpdateImUser(in.GetAccid(), m); res != 1 { if res, _ := UpdateImUser(in.GetAccid(), in.Common.Appkey, m); res != 1 {
err = status.Error(500, "用户禁音视频失败") err = status.Error(500, "用户禁音视频失败")
return return
} }
...@@ -178,12 +188,9 @@ func (u *ImUserServer) ImUserForbiddenAV(ctx context.Context, in *pb.ImUserSetRe ...@@ -178,12 +188,9 @@ func (u *ImUserServer) ImUserForbiddenAV(ctx context.Context, in *pb.ImUserSetRe
//获取用户信息 //获取用户信息
func (u *ImUserServer) ImUserOne(ctx context.Context, in *pb.ImUserOneRequest) (reply *pb.ImUserOneReply, err error) { func (u *ImUserServer) ImUserOne(ctx context.Context, in *pb.ImUserOneRequest) (reply *pb.ImUserOneReply, err error) {
imUserId := &ImUserQ{
Accid: in.GetAccid(),
}
reply = &pb.ImUserOneReply{} reply = &pb.ImUserOneReply{}
c_user, err := GetImUserByAccid(imUserId.Accid) c_user, err := GetImUserByAccidAppkey(in.GetAccid(), in.Common.Appkey)
if err != nil { if err != nil {
return return
} }
...@@ -195,12 +202,14 @@ func getImUser(imuser db.ImUser) *pb.ImUserOneReply { ...@@ -195,12 +202,14 @@ func getImUser(imuser db.ImUser) *pb.ImUserOneReply {
return &pb.ImUserOneReply{ return &pb.ImUserOneReply{
Id: int64(imuser.Id), Id: int64(imuser.Id),
Accid: imuser.Accid, Accid: imuser.Accid,
Appkey: imuser.Appkey,
Name: imuser.Name, Name: imuser.Name,
Mobile: imuser.Mobile, Mobile: imuser.Mobile,
Disable: int64(imuser.Disable), Gender: imuser.Gender,
Valid: int64(imuser.Valid),
MuteEstoppel: int64(imuser.MuteEstoppel), MuteEstoppel: int64(imuser.MuteEstoppel),
MuteAudioVideo: int64(imuser.MuteAudioVideo), MuteAudioVideo: int64(imuser.MuteAudioVideo),
Ext: imuser.Ext, Ex: imuser.Ex,
Createtime: imuser.Createtime, Createtime: imuser.Createtime,
Edition: imuser.Edition, Edition: imuser.Edition,
} }
......
...@@ -2,8 +2,8 @@ package im_user ...@@ -2,8 +2,8 @@ package im_user
import ( import (
"bytes" "bytes"
"crypto/md5" //"crypto/md5"
"encoding/hex" //"encoding/hex"
"errors" "errors"
"fmt" "fmt"
"im-microservice/db" "im-microservice/db"
...@@ -24,20 +24,30 @@ func CreateCaptcha() string { ...@@ -24,20 +24,30 @@ func CreateCaptcha() string {
return fmt.Sprintf("%04v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000)) return fmt.Sprintf("%04v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000))
} }
func createAccid() string { func randSeq(n int) string {
var letters = []rune("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
b := make([]rune, n)
for i := range b {
b[i] = letters[rand.Intn(len(letters))]
}
return string(b)
}
func createToken() string {
var buffer bytes.Buffer var buffer bytes.Buffer
kid := ksuid.New() kid := ksuid.New()
buffer.WriteString(kid.String()) buffer.WriteString(kid.String())
buffer.WriteString(CreateCaptcha()) buffer.WriteString(randSeq(37))
h := md5.New() return buffer.String()
h.Write([]byte(buffer.String())) // h := md5.New()
return hex.EncodeToString(h.Sum(nil)) // h.Write([]byte(buffer.String()))
// return hex.EncodeToString(h.Sum(nil))
} }
//通过手机号获取用户数据 //通过accid和appkey获取用户信息
func GetImUserByMobile(mobile string) (db.ImUser, error) { func GetImUserByAccidAppkey(accid string, appkey string) (db.ImUser, error) {
var c_user db.ImUser var c_user db.ImUser
err := db.MysqlClient.QueryTable(u_table_name).Filter("mobile", mobile).One(&c_user) err := db.MysqlClient.QueryTable(u_table_name).Filter("accid", accid).Filter("appkey", appkey).One(&c_user)
if err != nil { if err != nil {
return c_user, err return c_user, err
} }
...@@ -45,12 +55,20 @@ func GetImUserByMobile(mobile string) (db.ImUser, error) { ...@@ -45,12 +55,20 @@ func GetImUserByMobile(mobile string) (db.ImUser, error) {
} }
//im用户注册 //im用户注册
func CreateImUser(name string, mobile string) (db.ImUser, error) { func CreateImUser(in *pb.ImUserRequest) (db.ImUser, error) {
accid := createAccid() token := createToken()
var c_user db.ImUser var c_user db.ImUser
c_user.Accid = accid c_user.Accid = in.GetAccid()
c_user.Name = name c_user.Appkey = in.Common.Appkey
c_user.Mobile = mobile c_user.Name = in.GetName()
c_user.Icon = in.GetIcon()
c_user.Token = token
c_user.Sign = in.GetSign()
c_user.Email = in.GetEmail()
c_user.Birth = in.GetBirth()
c_user.Mobile = in.GetMobile()
c_user.Gender = in.GetGender()
c_user.Ex = in.GetEx()
c_user.Createtime = helper.GetNowTime() c_user.Createtime = helper.GetNowTime()
_, err := db.MysqlClient.Insert(&c_user) _, err := db.MysqlClient.Insert(&c_user)
if err != nil { if err != nil {
...@@ -61,7 +79,7 @@ func CreateImUser(name string, mobile string) (db.ImUser, error) { ...@@ -61,7 +79,7 @@ func CreateImUser(name string, mobile string) (db.ImUser, error) {
} }
//修改用户信息 //修改用户信息
func UpdateImUser(accid string, m map[string]interface{}) (int64, error) { func UpdateImUser(accid string, appkey string, m map[string]interface{}) (int64, error) {
orm_params := make(orm.Params) orm_params := make(orm.Params)
for k, v := range m { for k, v := range m {
switch v.(type) { switch v.(type) {
...@@ -76,34 +94,21 @@ func UpdateImUser(accid string, m map[string]interface{}) (int64, error) { ...@@ -76,34 +94,21 @@ func UpdateImUser(accid string, m map[string]interface{}) (int64, error) {
orm_params[k] = c_v orm_params[k] = c_v
} }
} }
res, err := db.MysqlClient.QueryTable(u_table_name).Filter("accid", accid).Update(orm_params) res, err := db.MysqlClient.QueryTable(u_table_name).Filter("accid", accid).Filter("appkey", appkey).Update(orm_params)
if err != nil { if err != nil {
return 0, err return 0, err
} }
return res, nil return res, nil
} }
//获取用户信息
func GetImUserByAccid(accid string) (db.ImUser, error) {
var c_user db.ImUser
err := db.MysqlClient.QueryTable(u_table_name).Filter("accid", accid).One(&c_user)
if err != nil {
return c_user, err
}
return c_user, nil
}
//获取用户列表 //获取用户列表
func GetImUserList(request *pb.ImUserListRequest) (results map[string]interface{}, err error) { func GetImUserList(request *pb.ImUserListRequest) (results map[string]interface{}, err error) {
var ( var (
mobile = request.GetMobile() mobile = request.GetMobile()
name = request.GetName() name = request.GetName()
disable = request.GetDisable() valid = request.GetValid()
mute_estoppel = request.GetMuteEstoppel() mute_estoppel = request.GetMuteEstoppel()
mute_audio_video = request.GetMuteAudioVideo() mute_audio_video = request.GetMuteAudioVideo()
ext = request.GetExt()
login_status = request.GetLoginStatus()
platform = request.GetPlatform()
page = request.GetPage() page = request.GetPage()
edition = request.GetEdition() edition = request.GetEdition()
) )
...@@ -117,8 +122,8 @@ func GetImUserList(request *pb.ImUserListRequest) (results map[string]interface{ ...@@ -117,8 +122,8 @@ func GetImUserList(request *pb.ImUserListRequest) (results map[string]interface{
if mobile != "" { if mobile != "" {
count_db = count_db.Filter("mobile", mobile) count_db = count_db.Filter("mobile", mobile)
} }
if disable != 0 { if valid != 0 {
count_db = count_db.Filter("disable", disable) count_db = count_db.Filter("valid", valid)
} }
if mute_estoppel != 0 { if mute_estoppel != 0 {
count_db = count_db.Filter("mute_estoppel", mute_estoppel) count_db = count_db.Filter("mute_estoppel", mute_estoppel)
...@@ -126,15 +131,7 @@ func GetImUserList(request *pb.ImUserListRequest) (results map[string]interface{ ...@@ -126,15 +131,7 @@ func GetImUserList(request *pb.ImUserListRequest) (results map[string]interface{
if mute_audio_video != 0 { if mute_audio_video != 0 {
count_db = count_db.Filter("mute_audio_video", mute_audio_video) count_db = count_db.Filter("mute_audio_video", mute_audio_video)
} }
if ext != "" {
count_db = count_db.Filter("ext__icontains", ext)
}
if login_status != 0 {
count_db = count_db.Filter("login_status", login_status)
}
if platform != "" {
count_db = count_db.Filter("platform", platform)
}
if edition != "" { if edition != "" {
count_db = count_db.Filter("edition", edition) count_db = count_db.Filter("edition", edition)
} }
......
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