新增用户相关的接口

This commit is contained in:
JeshuaRen 2025-02-10 16:13:26 +08:00
parent d4887545d3
commit b21e15763d
8 changed files with 221 additions and 39 deletions

View File

@ -58,7 +58,9 @@ func (db *AccessDB) GetAccessRequest(ctx SQLContext, userID cdssdk.UserID, dataT
bd.content,
bd.access_level,
ar.applicant_id,
ar.status
ar.status,
usr.username,
usr.sso_id
from
(
select
@ -84,6 +86,10 @@ func (db *AccessDB) GetAccessRequest(ctx SQLContext, userID cdssdk.UserID, dataT
) as bd on
bd.user_id = ar.user_id
and bd.id = ar.binding_id
left join (
select * from users
) as usr on
bd.user_id = usr.id
`
status := []string{sch.PendingStatus, sch.ApprovedStatus, sch.RejectedStatus}
err := ctx.Raw(sql, userID, status, userID, dataType, sch.ApplyAccess).Scan(&ret).Error
@ -142,3 +148,21 @@ func (db *AccessDB) GetUserBySsoID(ctx SQLContext, id string) (cdssdk.UserID, er
return ret, nil
}
func (db *AccessDB) AddUser(ctx SQLContext, user sch.User) error {
// 根据ssoID查询数据是否存在
var existUser sch.User
err := ctx.Table("users").Where("sso_id = ?", user.SsoID).Find(&existUser).Error
if err != nil {
return err
}
if existUser.ID != 0 {
return fmt.Errorf("user already exists")
}
return ctx.Table("users").Create(&user).Error
}
func (db *AccessDB) UpdateUser(ctx SQLContext, id string, username string) error {
return ctx.Table("users").Where("sso_id = ?", id).Update("username", username).Error
}

View File

@ -354,7 +354,9 @@ func (db *UploadDataDB) GetApplyBindings(ctx SQLContext, userID cdssdk.UserID, l
bd.data_type,
bd.content,
ar.applicant_id,
ar.status
ar.status,
usr.username,
usr.sso_id
from
(
select
@ -379,6 +381,10 @@ func (db *UploadDataDB) GetApplyBindings(ctx SQLContext, userID cdssdk.UserID, l
) as ar on
bd.user_id = ar.data_owner_id
and bd.id = ar.binding_id
left join (
select * from users
) as usr on
bd.user_id = usr.id
`
err := ctx.Raw(sql, level, dataType, userID, userID, sch.ExpiredStatus).Scan(&ret).Error
if err != nil {
@ -398,7 +404,9 @@ func (db *UploadDataDB) GetPublicBindings(ctx SQLContext, level string, dataType
bd.content,
bd.access_level,
ar.applicant_id,
ar.status
ar.status,
usr.username,
usr.sso_id
from
(
select
@ -419,6 +427,10 @@ func (db *UploadDataDB) GetPublicBindings(ctx SQLContext, level string, dataType
accessRequests
) as ar on
bd.user_id = ar.user_id
left join (
select * from users
) as usr on
bd.user_id = usr.id
`
err := ctx.Raw(sql, level, dataType, userID).Scan(&ret).Error
if err != nil {

View File

@ -144,30 +144,30 @@ func (s *AccessService) UpdateBindingDataAccess(ctx *gin.Context) {
ctx.JSON(http.StatusOK, OK("ok"))
}
type QueryUserReq struct {
SsoID string `form:"ssoID"`
}
type QueryUserResp struct {
UserID cdssdk.UserID `json:"userID"`
}
func (s *AccessService) QueryUser(ctx *gin.Context) {
var req QueryUserReq
if err := ctx.ShouldBindQuery(&req); err != nil {
log.Warnf("binding body: %s", err.Error())
ctx.JSON(http.StatusBadRequest, Failed(errorcode.BadArgument, "missing argument or invalid argument"))
return
}
userID, err := s.svc.AccessSvc().QueryUser(req.SsoID)
if err != nil {
log.Warnf("get access requests: %s", err.Error())
ctx.JSON(http.StatusOK, Failed(errorcode.OperationFailed, fmt.Sprintf("get access requests: %v", err)))
return
}
ctx.JSON(http.StatusOK, OK(QueryUserResp{
UserID: userID,
}))
}
//type QueryUserReq struct {
// SsoID string `form:"ssoID"`
//}
//
//type QueryUserResp struct {
// UserID cdssdk.UserID `json:"userID"`
//}
//
//func (s *AccessService) QueryUser(ctx *gin.Context) {
// var req QueryUserReq
// if err := ctx.ShouldBindQuery(&req); err != nil {
// log.Warnf("binding body: %s", err.Error())
// ctx.JSON(http.StatusBadRequest, Failed(errorcode.BadArgument, "missing argument or invalid argument"))
// return
// }
//
// userID, err := s.svc.AccessSvc().QueryUser(req.SsoID)
// if err != nil {
// log.Warnf("get access requests: %s", err.Error())
// ctx.JSON(http.StatusOK, Failed(errorcode.OperationFailed, fmt.Sprintf("get access requests: %v", err)))
// return
// }
//
// ctx.JSON(http.StatusOK, OK(QueryUserResp{
// UserID: userID,
// }))
//}

View File

@ -65,5 +65,8 @@ func (s *Server) initRouters() {
s.engine.POST("/access/updateAccessRequestStatus", s.AccessSvc().UpdateAccessRequestStatus)
s.engine.POST("/access/getAccessRequests", s.AccessSvc().GetAccessRequests)
s.engine.POST("/access/updateBindingDataAccess", s.AccessSvc().UpdateBindingDataAccess)
s.engine.GET("/access/queryUser", s.AccessSvc().QueryUser)
s.engine.GET("/user/query", s.UserSvc().QueryUser)
s.engine.GET("/user/register", s.UserSvc().AddUser)
s.engine.GET("/user/update", s.UserSvc().UpdateUser)
}

View File

@ -0,0 +1,89 @@
package http
import (
"fmt"
"github.com/gin-gonic/gin"
"gitlink.org.cn/cloudream/common/consts/errorcode"
log "gitlink.org.cn/cloudream/common/pkgs/logger"
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
"net/http"
)
type UserService struct {
*Server
}
func (s *Server) UserSvc() *UserService {
return &UserService{
Server: s,
}
}
type QueryUserReq struct {
SsoID string `form:"ssoID"`
}
type QueryUserResp struct {
UserID cdssdk.UserID `json:"userID"`
}
func (s *UserService) QueryUser(ctx *gin.Context) {
var req QueryUserReq
if err := ctx.ShouldBindQuery(&req); err != nil {
log.Warnf("binding body: %s", err.Error())
ctx.JSON(http.StatusBadRequest, Failed(errorcode.BadArgument, "missing argument or invalid argument"))
return
}
userID, err := s.svc.UserSvc().QueryUser(req.SsoID)
if err != nil {
log.Warnf("get access requests: %s", err.Error())
ctx.JSON(http.StatusOK, Failed(errorcode.OperationFailed, fmt.Sprintf("get access requests: %v", err)))
return
}
ctx.JSON(http.StatusOK, OK(QueryUserResp{
UserID: userID,
}))
}
type AlterUserReq struct {
SsoID string `form:"ssoID"`
UserName string `form:"userName"`
}
func (s *UserService) AddUser(ctx *gin.Context) {
var req AlterUserReq
if err := ctx.ShouldBindQuery(&req); err != nil {
log.Warnf("binding body: %s", err.Error())
ctx.JSON(http.StatusBadRequest, Failed(errorcode.BadArgument, "missing argument or invalid argument"))
return
}
err := s.svc.UserSvc().AddUser(req.SsoID, req.UserName)
if err != nil {
log.Warnf("get access requests: %s", err.Error())
ctx.JSON(http.StatusOK, Failed(errorcode.OperationFailed, fmt.Sprintf("get access requests: %v", err)))
return
}
ctx.JSON(http.StatusOK, OK("ok"))
}
func (s *UserService) UpdateUser(ctx *gin.Context) {
var req AlterUserReq
if err := ctx.ShouldBindQuery(&req); err != nil {
log.Warnf("binding body: %s", err.Error())
ctx.JSON(http.StatusBadRequest, Failed(errorcode.BadArgument, "missing argument or invalid argument"))
return
}
err := s.svc.UserSvc().UpdateUser(req.SsoID, req.UserName)
if err != nil {
log.Warnf("get access requests: %s", err.Error())
ctx.JSON(http.StatusOK, Failed(errorcode.OperationFailed, fmt.Sprintf("get access requests: %v", err)))
return
}
ctx.JSON(http.StatusOK, OK("ok"))
}

View File

@ -125,11 +125,11 @@ func (svc *AccessService) UpdateBindingDataAccess(id uploadersdk.DataID, level s
return nil
}
func (svc *AccessService) QueryUser(id string) (cdssdk.UserID, error) {
userID, err := svc.db.Access().GetUserBySsoID(svc.db.DefCtx(), id)
if err != nil {
return userID, err
}
return userID, err
}
//func (svc *AccessService) QueryUser(id string) (cdssdk.UserID, error) {
// userID, err := svc.db.Access().GetUserBySsoID(svc.db.DefCtx(), id)
// if err != nil {
// return userID, err
// }
//
// return userID, err
//}

View File

@ -560,6 +560,8 @@ func (svc *JobSetService) QueryBinding(dataType string, param sch.QueryBindingDa
bindingDetail := uploadersdk.BindingDetail{
ID: data.ID,
UserID: data.UserID,
UserName: data.UserName,
SSOId: data.SSOId,
Name: data.Name,
Info: info,
AccessLevel: data.AccessLevel,
@ -592,6 +594,8 @@ func (svc *JobSetService) QueryBinding(dataType string, param sch.QueryBindingDa
bindingDetail := uploadersdk.BindingDetail{
ID: data.ID,
UserID: data.UserID,
UserName: data.UserName,
SSOId: data.SSOId,
Name: data.Name,
Info: info,
Status: data.Status,
@ -815,6 +819,7 @@ func (svc *JobSetService) DeletePackage(userID cdssdk.UserID, packageID cdssdk.P
}
func (svc *JobSetService) QueryResource(queryResource sch.ResourceRange) ([]sch.ClusterDetail, error) {
clusterDetails, err := svc.getClusterResources()
if err != nil {
return nil, err
@ -1007,6 +1012,7 @@ func (svc *JobSetService) getClusterResources() ([]sch.ClusterDetail, error) {
if err != nil {
return nil, fmt.Errorf("get cluster info: %w", err)
}
if len(clusterDetails) == 0 {
return nil, errors.New("no cluster found")
}

View File

@ -0,0 +1,48 @@
package services
import (
sch "gitlink.org.cn/cloudream/common/sdks/pcmscheduler"
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
"time"
)
type UserService struct {
*Service
}
func (svc *Service) UserSvc() *UserService {
return &UserService{Service: svc}
}
func (svc *UserService) QueryUser(id string) (cdssdk.UserID, error) {
userID, err := svc.db.Access().GetUserBySsoID(svc.db.DefCtx(), id)
if err != nil {
return userID, err
}
return userID, err
}
func (svc *UserService) AddUser(id string, userName string) error {
user := sch.User{
SsoID: id,
UserName: userName,
Created: time.Now(),
}
err := svc.db.Access().AddUser(svc.db.DefCtx(), user)
if err != nil {
return err
}
return err
}
func (svc *UserService) UpdateUser(id string, userName string) error {
err := svc.db.Access().UpdateUser(svc.db.DefCtx(), id, userName)
if err != nil {
return err
}
return err
}