go-platform/controllers/backend_admin_user.go

97 lines
2.1 KiB
Go

package controllers
import (
"strconv"
"server/models"
"server/services"
beego "github.com/beego/beego/v2/server/web"
)
type BackendAdminUserController struct {
beego.Controller
}
type backendUserInfoDTO struct {
ID uint64 `json:"id"`
Tid uint64 `json:"tid"`
Uid uint64 `json:"uid"`
Account *string `json:"account"`
Name *string `json:"name"`
Phone *string `json:"phone"`
Email *string `json:"email"`
Status int8 `json:"status"`
CreateTime string `json:"create_time"`
TenantName string `json:"tenant_name"`
TenantCode string `json:"tenant_code"`
}
// GetUserInfo 获取当前登录租户用户的详情
// GET /backend/getUserInfo
func (c *BackendAdminUserController) GetUserInfo() {
var uid uint64
var tid uint64
data := c.Ctx.Input.Data()
if jwtUid := data["uid"]; jwtUid != nil {
uid = jwtUid.(uint64)
}
if jwtTid := data["tid"]; jwtTid != nil {
tid = jwtTid.(uint64)
}
if uid == 0 {
idStr := c.Ctx.Input.Param(":id")
uid, _ = strconv.ParseUint(idStr, 10, 64)
}
if uid == 0 {
c.Data["json"] = map[string]interface{}{"code": 401, "msg": "未登录或非法请求"}
_ = c.ServeJSON()
return
}
var u *models.SystemTenantUser
var err error
if tid > 0 {
u, err = services.GetTenantUserByUidAndTid(uid, tid)
} else {
u, err = services.GetTenantUserByUid(uid)
}
if err != nil || u == nil {
c.Data["json"] = map[string]interface{}{"code": 404, "msg": "后台用户信息不存在"}
_ = c.ServeJSON()
return
}
tenant, err := services.GetTenantByID(u.Tid)
tenantName := "未知租户"
tenantCode := ""
if err == nil && tenant != nil {
tenantName = tenant.TenantName
tenantCode = tenant.TenantCode
}
c.Data["json"] = map[string]interface{}{
"code": 200,
"msg": "success",
"data": backendUserInfoDTO{
ID: u.ID,
Tid: u.Tid,
Uid: u.Uid,
Account: u.Account,
Name: u.Name,
Phone: u.Phone,
Email: u.Email,
Status: u.Status,
CreateTime: u.CreateTime.Format("2006-01-02 15:04:05"),
TenantName: tenantName,
TenantCode: tenantCode,
},
}
_ = c.ServeJSON()
}