Merge branch 'tuoyun'

pull/215/head
wangchuxiao 3 years ago
commit 3289dd8419

@ -53,8 +53,9 @@ type PushReq struct {
Audience struct { Audience struct {
Cid []string `json:"cid"` Cid []string `json:"cid"`
} `json:"audience"` } `json:"audience"`
PushMssage struct { PushMessage struct {
Notification Notification `json:"notification"` Notification Notification `json:"notification,omitempty"`
Transmission string `json:"transmission,omitempty"`
} `json:"push_message"` } `json:"push_message"`
} }
@ -62,11 +63,12 @@ type Notification struct {
Title string `json:"title"` Title string `json:"title"`
Body string `json:"body"` Body string `json:"body"`
ClickType string `json:"click_type"` ClickType string `json:"click_type"`
Intent string `json:"intent"` //Intent string `json:"intent,omitempty"`
Url string `json:"url"` //Url string `json:"url,omitempty"`
} }
type PushResp struct { type PushResp struct {
GetuiCommonResp
} }
func newGetuiClient() *Getui { func newGetuiClient() *Getui {
@ -75,18 +77,15 @@ func newGetuiClient() *Getui {
func (g *Getui) Push(userIDList []string, alert, detailContent, platform, operationID string) (resp string, err error) { func (g *Getui) Push(userIDList []string, alert, detailContent, platform, operationID string) (resp string, err error) {
token, err := db.DB.GetGetuiToken() token, err := db.DB.GetGetuiToken()
log.NewDebug(operationID, utils.GetSelfFuncName(), "token", token)
if err != nil { if err != nil {
log.NewError(operationID, utils.OperationIDGenerator(), "GetGetuiToken failed", err.Error()) log.NewError(operationID, utils.OperationIDGenerator(), "GetGetuiToken failed", err.Error())
} }
if token == "" || err != nil { if token == "" || err != nil {
token, expireTime, err := g.Auth(operationID, time.Now().UnixNano()/1e6) token, err = g.getTokenAndSave2Redis(operationID)
if err != nil { if err != nil {
return "", utils.Wrap(err, "Auth failed") log.NewError(operationID, utils.GetSelfFuncName(), "getTokenAndSave2Redis failed", err.Error())
} return "", utils.Wrap(err, "")
log.NewInfo(operationID, "getui", utils.GetSelfFuncName(), token, expireTime, err)
err = db.DB.SetGetuiToken(token, 60*60*23)
if err != nil {
return "", utils.Wrap(err, "Auth failed")
} }
} }
pushReq := PushReq{ pushReq := PushReq{
@ -95,22 +94,22 @@ func (g *Getui) Push(userIDList []string, alert, detailContent, platform, operat
Cid []string `json:"cid"` Cid []string `json:"cid"`
}{Cid: []string{userIDList[0]}}, }{Cid: []string{userIDList[0]}},
} }
pushReq.PushMssage.Notification = Notification{ pushReq.PushMessage.Notification = Notification{
Title: alert, Title: alert,
Body: alert, Body: alert,
ClickType: "none", ClickType: "startapp",
}
if config.Config.Push.Getui.Intent != "" {
pushReq.PushMssage.Notification.Intent = config.Config.Push.Getui.Intent
pushReq.PushMssage.Notification.ClickType = "intent"
} }
pushResp := PushResp{} pushResp := PushResp{}
err = g.request(PushURL, pushReq, token, &pushResp, operationID) err = g.request(PushURL, pushReq, token, &pushResp, operationID)
if err != nil { if err != nil {
return "", utils.Wrap(err, "push failed") return "", utils.Wrap(err, "push failed")
} }
log.NewDebug(operationID, utils.GetSelfFuncName(), "resp: ", pushResp)
if pushResp.Code == 10001 {
_, _ = g.getTokenAndSave2Redis(operationID)
}
respBytes, err := json.Marshal(pushResp) respBytes, err := json.Marshal(pushResp)
return string(respBytes), err return string(respBytes), utils.Wrap(err, "")
} }
func (g *Getui) Auth(operationID string, timeStamp int64) (token string, expireTime int64, err error) { func (g *Getui) Auth(operationID string, timeStamp int64) (token string, expireTime int64, err error) {
@ -147,7 +146,7 @@ func (g *Getui) request(url string, content interface{}, token string, returnStr
return err return err
} }
if token != "" { if token != "" {
req.Header.Set(token, token) req.Header.Set("token", token)
} }
req.Header.Set("content-type", "application/json") req.Header.Set("content-type", "application/json")
resp, err := client.Do(req) resp, err := client.Do(req)
@ -160,8 +159,23 @@ func (g *Getui) request(url string, content interface{}, token string, returnStr
return err return err
} }
log.NewInfo(operationID, "getui", utils.GetSelfFuncName(), "resp, ", string(result)) log.NewInfo(operationID, "getui", utils.GetSelfFuncName(), "resp, ", string(result))
if err := json.Unmarshal(result, returnStruct); err != nil { commonResp := GetuiCommonResp{}
commonResp.Data = returnStruct
if err := json.Unmarshal(result, &commonResp); err != nil {
return err return err
} }
return nil return nil
} }
func (g *Getui) getTokenAndSave2Redis(operationID string) (token string, err error) {
token, expireTime, err := g.Auth(operationID, time.Now().UnixNano()/1e6)
if err != nil {
return "", utils.Wrap(err, "Auth failed")
}
log.NewDebug(operationID, "getui", utils.GetSelfFuncName(), token, expireTime, err)
err = db.DB.SetGetuiToken(token, 60*60*23)
if err != nil {
return "", utils.Wrap(err, "Auth failed")
}
return token, nil
}

@ -656,7 +656,7 @@ func (s *groupServer) GetGroupById(_ context.Context, req *pbGroup.GetGroupByIdR
}} }}
group, err := imdb.GetGroupById(req.GroupId) group, err := imdb.GetGroupById(req.GroupId)
if err != nil { if err != nil {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "GetGroupById error", err.Error()) log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupById error", err.Error())
return resp, http.WrapError(constant.ErrDB) return resp, http.WrapError(constant.ErrDB)
} }
resp.CMSGroup.GroupInfo = &open_im_sdk.GroupInfo{ resp.CMSGroup.GroupInfo = &open_im_sdk.GroupInfo{

@ -222,3 +222,50 @@ type Conversation struct {
func (Conversation) TableName() string { func (Conversation) TableName() string {
return "conversations" return "conversations"
} }
type Department struct {
DepartmentID string `gorm:"column:department_id;primary_key;size:64" json:"departmentID"`
FaceURL string `gorm:"column:face_url;size:255" json:"faceURL"`
Name string `gorm:"column:name;size:256" json:"name" binding:"required"`
ParentID string `gorm:"column:parent_id;size:64" json:"parentID" binding:"required"`
Order int32 `gorm:"column:order" json:"order" `
DepartmentType int32 `gorm:"column:department_type" json:"departmentType"`
CreateTime time.Time `gorm:"column:create_time" json:"createTime"`
Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"`
}
func (Department) TableName() string {
return "departments"
}
type DepartmentUser struct {
UserID string `gorm:"column:user_id;primary_key;size:64"`
Nickname string `gorm:"column:nickname;size:256"`
EnglishName string `gorm:"column:english_name;size:256"`
FaceURL string `gorm:"column:face_url;size:256"`
Gender int32 `gorm:"column:gender"`
mobile string `gorm:"column:mobile;size:32"`
telephone string `gorm:"column:telephone;size:32"`
Birth time.Time `gorm:"column:birth"`
Email string `gorm:"column:email;size:64"`
CreateTime time.Time `gorm:"column:create_time"`
Ex string `gorm:"column:ex;size:1024"`
}
func (DepartmentUser) TableName() string {
return "Department_users"
}
type DepartmentMember struct {
userID string `gorm:"column:user_id;primary_key;size:64"`
DepartmentID string `gorm:"column:department_id;primary_key;size:64"`
Order int32 `gorm:"column:order" json:"order"`
Position string `gorm:"column:position;size:256" json:"position"`
Leader int32 `gorm:"column:leader" json:"leader"`
Status int32 `gorm:"column:status" json:"status"`
Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"`
}
func (DepartmentMember) TableName() string {
return "department_members"
}

@ -82,169 +82,43 @@ func initMysqlDB() {
fmt.Println("CreateTable GroupMember") fmt.Println("CreateTable GroupMember")
db.CreateTable(&GroupMember{}) db.CreateTable(&GroupMember{})
} }
if !db.HasTable(&GroupRequest{}) { if !db.HasTable(&GroupRequest{}) {
fmt.Println("CreateTable GroupRequest") fmt.Println("CreateTable GroupRequest")
db.CreateTable(&GroupRequest{}) db.CreateTable(&GroupRequest{})
} }
if !db.HasTable(&User{}) { if !db.HasTable(&User{}) {
fmt.Println("CreateTable User") fmt.Println("CreateTable User")
db.CreateTable(&User{}) db.CreateTable(&User{})
} }
if !db.HasTable(&Black{}) { if !db.HasTable(&Black{}) {
fmt.Println("CreateTable Black") fmt.Println("CreateTable Black")
db.CreateTable(&Black{}) db.CreateTable(&Black{})
} }
if !db.HasTable(&ChatLog{}) { if !db.HasTable(&ChatLog{}) {
fmt.Println("CreateTable Black") fmt.Println("CreateTable ChatLog")
db.CreateTable(&ChatLog{}) db.CreateTable(&ChatLog{})
} }
if !db.HasTable(&Register{}) { if !db.HasTable(&Register{}) {
fmt.Println("CreateTable Black") fmt.Println("CreateTable Register")
db.CreateTable(&Register{}) db.CreateTable(&Register{})
} }
if !db.HasTable(&Conversation{}) { if !db.HasTable(&Conversation{}) {
fmt.Println("CreateTable Black") fmt.Println("CreateTable Conversation")
db.CreateTable(&Conversation{}) db.CreateTable(&Conversation{})
} }
if db.HasTable(&Department{}) {
return fmt.Println("CreateTable Department")
db.CreateTable(&Department{})
sqlTable := "CREATE TABLE IF NOT EXISTS `user` (" +
" `uid` varchar(64) NOT NULL," +
" `name` varchar(64) DEFAULT NULL," +
" `icon` varchar(1024) DEFAULT NULL," +
" `gender` tinyint(4) unsigned zerofill DEFAULT NULL," +
" `mobile` varchar(32) DEFAULT NULL," +
" `birth` varchar(16) DEFAULT NULL," +
" `email` varchar(64) DEFAULT NULL," +
" `ex` varchar(1024) DEFAULT NULL," +
" `create_time` datetime DEFAULT NULL," +
" PRIMARY KEY (`uid`)," +
" UNIQUE KEY `uk_uid` (`uid`)" +
" ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
err = db.Exec(sqlTable).Error
if err != nil {
panic(err.Error())
}
sqlTable = "CREATE TABLE IF NOT EXISTS `friend` (" +
" `owner_id` varchar(64) NOT NULL," +
" `friend_id` varchar(64) NOT NULL," +
" `comment` varchar(255) DEFAULT NULL," +
" `friend_flag` int(11) NOT NULL," +
" `create_time` datetime NOT NULL," +
" PRIMARY KEY (`owner_id`,`friend_id`) USING BTREE" +
" ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;"
err = db.Exec(sqlTable).Error
if err != nil {
panic(err.Error())
} }
if db.HasTable(&DepartmentUser{}) {
sqlTable = "CREATE TABLE IF NOT EXISTS `friend_request` (" + fmt.Println("CreateTable DepartmentUser")
" `req_id` varchar(64) NOT NULL," + db.CreateTable(&DepartmentUser{})
" `user_id` varchar(64) NOT NULL," +
" `flag` int(11) NOT NULL DEFAULT '0'," +
" `req_message` varchar(255) DEFAULT NULL," +
" `create_time` datetime NOT NULL," +
" PRIMARY KEY (`user_id`,`req_id`) USING BTREE" +
" ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;"
err = db.Exec(sqlTable).Error
if err != nil {
panic(err.Error())
} }
if db.HasTable(&DepartmentMember{}) {
sqlTable = "CREATE TABLE IF NOT EXISTS `user_black_list` (" + fmt.Println("CreateTable DepartmentMember")
" `owner_id` varchar(64) NOT NULL," + db.CreateTable(&DepartmentMember{})
" `block_id` varchar(64) NOT NULL," +
" `create_time` datetime NOT NULL," +
" PRIMARY KEY (`owner_id`,`block_id`) USING BTREE" +
" ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;"
err = db.Exec(sqlTable).Error
if err != nil {
panic(err.Error())
} }
return
sqlTable = "CREATE TABLE IF NOT EXISTS `group` (" +
" `group_id` varchar(64) NOT NULL," +
" `name` varchar(255) DEFAULT NULL," +
" `introduction` varchar(255) DEFAULT NULL," +
" `notification` varchar(255) DEFAULT NULL," +
" `face_url` varchar(255) DEFAULT NULL," +
" `create_time` datetime DEFAULT NULL," +
" `ex` varchar(255) DEFAULT NULL," +
" PRIMARY KEY (`group_id`)" +
" ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;"
err = db.Exec(sqlTable).Error
if err != nil {
panic(err.Error())
}
sqlTable = "CREATE TABLE IF NOT EXISTS `group_member` (" +
" `group_id` varchar(64) NOT NULL," +
" `uid` varchar(64) NOT NULL," +
" `nickname` varchar(255) DEFAULT NULL," +
" `user_group_face_url` varchar(255) DEFAULT NULL," +
" `administrator_level` int(11) NOT NULL," +
" `join_time` datetime NOT NULL," +
" PRIMARY KEY (`group_id`,`uid`) USING BTREE" +
" ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;"
err = db.Exec(sqlTable).Error
if err != nil {
panic(err.Error())
}
sqlTable = "CREATE TABLE IF NOT EXISTS `group_request` (" +
" `id` int(11) NOT NULL AUTO_INCREMENT," +
" `group_id` varchar(64) NOT NULL," +
" `from_user_id` varchar(255) NOT NULL," +
" `to_user_id` varchar(255) NOT NULL," +
" `flag` int(10) NOT NULL DEFAULT '0'," +
" `req_msg` varchar(255) DEFAULT ''," +
" `handled_msg` varchar(255) DEFAULT ''," +
" `create_time` datetime NOT NULL," +
" `from_user_nickname` varchar(255) DEFAULT ''," +
" `to_user_nickname` varchar(255) DEFAULT NULL," +
" `from_user_face_url` varchar(255) DEFAULT ''," +
" `to_user_face_url` varchar(255) DEFAULT ''," +
" `handled_user` varchar(255) DEFAULT ''," +
" PRIMARY KEY (`id`)" +
" ) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8mb4;"
err = db.Exec(sqlTable).Error
if err != nil {
panic(err.Error())
}
sqlTable = "CREATE TABLE IF NOT EXISTS `chat_log` (" +
" `msg_id` varchar(128) NOT NULL," +
" `send_id` varchar(255) NOT NULL," +
" `session_type` int(11) NOT NULL," +
" `recv_id` varchar(255) NOT NULL," +
" `content_type` int(11) NOT NULL," +
" `msg_from` int(11) NOT NULL," +
" `content` varchar(1000) NOT NULL," +
" `remark` varchar(100) DEFAULT NULL," +
" `sender_platform_id` int(11) NOT NULL," +
" `send_time` datetime NOT NULL," +
" PRIMARY KEY (`msg_id`) USING BTREE" +
" ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;"
err = db.Exec(sqlTable).Error
if err != nil {
panic(err.Error())
}
sqlTable = "CREATE TABLE IF NOT EXISTS `register` (" +
" `account` varchar(255) NOT NULL," +
" `password` varchar(255) NOT NULL," +
" PRIMARY KEY (`account`) USING BTREE" +
" ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;"
err = db.Exec(sqlTable).Error
if err != nil {
panic(err.Error())
}
} }
func (m *mysqlDB) DefaultGormDB() (*gorm.DB, error) { func (m *mysqlDB) DefaultGormDB() (*gorm.DB, error) {

@ -38,6 +38,6 @@ func RespHttp200(ctx *gin.Context, err error, data interface{}) {
} }
// warp error // warp error
func WrapError(err constant.ErrInfo, msg ...string) error { func WrapError(err constant.ErrInfo) error {
return status.Error(codes.Code(err.ErrCode), err.ErrMsg+msg[0]) return status.Error(codes.Code(err.ErrCode), err.ErrMsg)
} }

Loading…
Cancel
Save