mirror of
https://github.com/openimsdk/open-im-server.git
synced 2026-05-11 12:36:00 +08:00
organization
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
package base_info
|
||||
|
||||
import open_im_sdk "Open_IM/pkg/proto/sdk_ws"
|
||||
|
||||
type CreateDepartmentReq struct {
|
||||
*open_im_sdk.Department
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
}
|
||||
type CreateDepartmentResp struct {
|
||||
CommResp
|
||||
Department *open_im_sdk.Department `json:"-"`
|
||||
Data map[string]interface{} `json:"data"`
|
||||
}
|
||||
|
||||
type UpdateDepartmentReq struct {
|
||||
*open_im_sdk.Department
|
||||
DepartmentID string `json:"departmentID" binding:"required"`
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
}
|
||||
type UpdateDepartmentResp struct {
|
||||
CommResp
|
||||
}
|
||||
|
||||
type GetDepartmentReq struct {
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
DepartmentID string
|
||||
}
|
||||
type GetDepartmentResp struct {
|
||||
CommResp
|
||||
DepartmentList []*open_im_sdk.Department `json:"-"`
|
||||
Data []map[string]interface{} `json:"data"`
|
||||
}
|
||||
|
||||
type DeleteDepartmentReq struct {
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
DepartmentID string
|
||||
}
|
||||
type DeleteDepartmentResp struct {
|
||||
CommResp
|
||||
}
|
||||
|
||||
type CreateOrganizationUserReq struct {
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
OrganizationUser *open_im_sdk.OrganizationUser
|
||||
}
|
||||
type CreateOrganizationUserResp struct {
|
||||
CommResp
|
||||
}
|
||||
|
||||
type UpdateOrganizationUserReq struct {
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
OrganizationUser *open_im_sdk.OrganizationUser
|
||||
}
|
||||
type UpdateOrganizationUserResp struct {
|
||||
CommResp
|
||||
}
|
||||
|
||||
type CreateDepartmentMemberReq struct {
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
UserInDepartment *open_im_sdk.UserInDepartment
|
||||
}
|
||||
|
||||
type CreateDepartmentMemberResp struct {
|
||||
CommResp
|
||||
}
|
||||
|
||||
type GetUserInDepartmentReq struct {
|
||||
UserID string
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
}
|
||||
type GetUserInDepartmentResp struct {
|
||||
CommResp
|
||||
UserInDepartment *open_im_sdk.UserInDepartment `json:"-"`
|
||||
Data map[string]interface{} `json:"data"`
|
||||
}
|
||||
|
||||
type UpdateUserInDepartmentReq struct {
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
UserInDepartment *open_im_sdk.UserInDepartment
|
||||
}
|
||||
type UpdateUserInDepartmentResp struct {
|
||||
CommResp
|
||||
}
|
||||
|
||||
type DeleteOrganizationUserReq struct {
|
||||
UserID string
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
}
|
||||
type DeleteOrganizationUserResp struct {
|
||||
CommResp
|
||||
}
|
||||
|
||||
type GetDepartmentMemberReq struct {
|
||||
DepartmentID string
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
}
|
||||
type GetDepartmentMemberResp struct {
|
||||
CommResp
|
||||
UserInDepartmentList []*open_im_sdk.UserInDepartment `json:"-"`
|
||||
Data []map[string]interface{} `json:"data"`
|
||||
}
|
||||
@@ -257,13 +257,14 @@ func (OrganizationUser) TableName() string {
|
||||
}
|
||||
|
||||
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"`
|
||||
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"`
|
||||
CreateTime time.Time `gorm:"column:create_time"`
|
||||
Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"`
|
||||
}
|
||||
|
||||
func (DepartmentMember) TableName() string {
|
||||
|
||||
@@ -0,0 +1,155 @@
|
||||
package im_mysql_model
|
||||
|
||||
import (
|
||||
"Open_IM/pkg/common/db"
|
||||
"errors"
|
||||
"time"
|
||||
)
|
||||
|
||||
func CreateDepartment(department *db.Department) error {
|
||||
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
department.CreateTime = time.Now()
|
||||
return dbConn.Table("departments").Create(department).Error
|
||||
}
|
||||
|
||||
func GetDepartment(departmentID string) (error, *db.Department) {
|
||||
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
|
||||
if err != nil {
|
||||
return err, nil
|
||||
}
|
||||
var department db.Department
|
||||
err = dbConn.Table("departments").Where("department_id=?", departmentID).Find(&department).Error
|
||||
return err, &department
|
||||
}
|
||||
|
||||
func UpdateDepartment(department *db.Department, args map[string]interface{}) error {
|
||||
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err = dbConn.Table("departments").Where("department_id=?", department.DepartmentID).Updates(department).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if args != nil {
|
||||
return dbConn.Table("departments").Where("department_id=?", department.DepartmentID).Updates(args).Error
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetSubDepartmentList(departmentID string) (error, []db.Department) {
|
||||
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
|
||||
if err != nil {
|
||||
return err, nil
|
||||
}
|
||||
var departmentList []db.Department
|
||||
err = dbConn.Table("departments").Where("parent_id=?", departmentID).Find(&departmentList).Error
|
||||
return err, departmentList
|
||||
}
|
||||
|
||||
func DeleteDepartment(departmentID string) error {
|
||||
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err = dbConn.Table("departments").Where("department_id=?", departmentID).Delete(db.Department{}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if err = dbConn.Table("department_members").Where("department_id=?", departmentID).Delete(db.DepartmentMember{}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func CreateOrganizationUser(organizationUser *db.OrganizationUser) error {
|
||||
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
organizationUser.CreateTime = time.Now()
|
||||
return dbConn.Table("organization_users").Create(organizationUser).Error
|
||||
}
|
||||
|
||||
func UpdateOrganizationUser(organizationUser *db.OrganizationUser, args map[string]interface{}) error {
|
||||
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err = dbConn.Table("organization_users").Where("user_id=?", organizationUser.UserID).Updates(organizationUser).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if args != nil {
|
||||
return dbConn.Table("organization_users").Where("user_id=?", organizationUser.UserID).Updates(args).Error
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func CreateDepartmentMember(departmentMember *db.DepartmentMember) error {
|
||||
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
departmentMember.CreateTime = time.Now()
|
||||
return dbConn.Table("department_members").Create(departmentMember).Error
|
||||
}
|
||||
|
||||
func GetUserInDepartment(userID string) (error, []db.DepartmentMember) {
|
||||
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
|
||||
if err != nil {
|
||||
return err, nil
|
||||
}
|
||||
var departmentMemberList []db.DepartmentMember
|
||||
err = dbConn.Table("department_members").Where("user_id=?", userID).Find(&departmentMemberList).Error
|
||||
return err, departmentMemberList
|
||||
}
|
||||
|
||||
func UpdateUserInDepartment(userInDepartmentList []db.DepartmentMember) error {
|
||||
if len(userInDepartmentList) == 0 {
|
||||
return errors.New("args failed")
|
||||
}
|
||||
if err := DeleteUserInAllDepartment(userInDepartmentList[0].UserID); err != nil {
|
||||
return err
|
||||
}
|
||||
for _, v := range userInDepartmentList {
|
||||
if err := CreateDepartmentMember(&v); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func DeleteUserInAllDepartment(userID string) error {
|
||||
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return dbConn.Table("department_members").Where("user_id=?", userID).Delete(db.DepartmentMember{}).Error
|
||||
}
|
||||
|
||||
func DeleteOrganizationUser(OrganizationUserID string) error {
|
||||
if err := DeleteUserInAllDepartment(OrganizationUserID); err != nil {
|
||||
return err
|
||||
}
|
||||
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return dbConn.Table("organization_users").Where("user_id=?", OrganizationUserID).Delete(db.OrganizationUser{}).Error
|
||||
}
|
||||
|
||||
func GetDepartmentMemberUserIDList(departmentID string) (error, []string) {
|
||||
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
|
||||
if err != nil {
|
||||
return err, nil
|
||||
}
|
||||
var departmentMemberList []db.DepartmentMember
|
||||
err = dbConn.Table("department_members").Where("department_id=?", departmentID).Find(&departmentMemberList).Error
|
||||
|
||||
var userIDList []string = make([]string, 0)
|
||||
for _, v := range departmentMemberList {
|
||||
userIDList = append(userIDList, v.UserID)
|
||||
}
|
||||
return err, userIDList
|
||||
}
|
||||
@@ -138,6 +138,14 @@ func GetUserIDFromToken(token string, operationID string) (bool, string) {
|
||||
return true, claims.UID
|
||||
}
|
||||
|
||||
func ParseTokenGetUserID(token string, operationID string) (error, string) {
|
||||
claims, err := ParseToken(token, operationID)
|
||||
if err != nil {
|
||||
return utils.Wrap(err, ""), ""
|
||||
}
|
||||
return nil, claims.UID
|
||||
}
|
||||
|
||||
func ParseToken(tokensString, operationID string) (claims *Claims, err error) {
|
||||
claims, err = GetClaimFromToken(tokensString)
|
||||
if err != nil {
|
||||
|
||||
@@ -114,12 +114,12 @@ message UpdateUserInDepartmentResp{
|
||||
}
|
||||
|
||||
|
||||
message DeleteOrganizationReq{
|
||||
message DeleteOrganizationUserReq{
|
||||
string userID = 1;
|
||||
string operationID = 2;
|
||||
string opUserID = 3;
|
||||
}
|
||||
message DeleteOrganizationResp{
|
||||
message DeleteOrganizationUserResp{
|
||||
int32 errCode = 1;
|
||||
string errMsg = 2;
|
||||
}
|
||||
@@ -139,7 +139,7 @@ message GetDepartmentMemberResp{
|
||||
|
||||
|
||||
service organization{
|
||||
rpc createDepartment(CreateDepartmentReq) returns(CreateDepartmentResp);
|
||||
rpc CreateDepartment(CreateDepartmentReq) returns(CreateDepartmentResp);
|
||||
rpc UpdateDepartment(UpdateDepartmentReq) returns(UpdateDepartmentResp);
|
||||
rpc GetDepartment(GetDepartmentReq) returns(GetDepartmentResp);
|
||||
rpc DeleteDepartment(DeleteDepartmentReq) returns(DeleteDepartmentResp);
|
||||
@@ -148,7 +148,7 @@ service organization{
|
||||
rpc CreateDepartmentMember(CreateDepartmentMemberReq) returns(CreateDepartmentMemberResp);
|
||||
rpc GetUserInDepartment(GetUserInDepartmentReq) returns(GetUserInDepartmentResp);
|
||||
rpc UpdateUserInDepartment(UpdateUserInDepartmentReq) returns(UpdateUserInDepartmentResp);
|
||||
rpc DeleteOrganization(DeleteOrganizationReq) returns(DeleteOrganizationResp);
|
||||
rpc DeleteOrganizationUser(DeleteOrganizationUserReq) returns(DeleteOrganizationUserResp);
|
||||
rpc GetDepartmentMember(GetDepartmentMemberReq) returns(GetDepartmentMemberResp);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user