package api import ( "fmt" "mats/bus" "mats/db/model" "mats/db/repo" "time" "github.com/gin-gonic/gin" "go.mongodb.org/mongo-driver/bson/primitive" ) func RegQueenterApi(router *GinRouter) { //设备列表管理 CollectionName := "queenters" CreateCRUD(router, "/queenter/device", &CRUDOption{ Collection: CollectionName, NewModel: func(c *gin.Context, apictx *ApiSession) (interface{}, error) { hub := &model.DeviceQueenter{} c.ShouldBindJSON(hub) hub.CreateTime = time.Now() hub.UserId, _ = primitive.ObjectIDFromHex(apictx.User.Parent) if hub.UserId == primitive.NilObjectID { return nil, NewError("参数不合法!") } hub.Thumbnail = "https://sku3d-test.obs.cn-east-3.myhuaweicloud.com/avatar/queenter2.png" hub.Name = "Queenter4.0" count, err := repo.RepoCountDoc(apictx.CreateRepoCtx(), repo.CollectionQueenters, repo.Map{"userId": hub.UserId}) if err != nil { return nil, err } if count < 1 { isDefault := true hub.IsDefaut = &isDefault } return hub, nil }, EmtyModel: func(c *gin.Context, apictx *ApiSession) interface{} { return &model.DeviceQueenter{} }, SearchFilter: func(c *gin.Context, apictx *ApiSession, query map[string]interface{}) map[string]interface{} { userId, _ := primitive.ObjectIDFromHex(apictx.User.Parent) return map[string]interface{}{"userId": userId} }, JWT: true, SearchProject: []string{"name", "thumbnail", "createTime", "bindOutId", "isDefault", "uuid", "lastRunTime", "lastUploadTime"}, Remove: func(c *gin.Context, apictx *ApiSession, id string) (interface{}, error) { return repo.RepoDeleteDoc(apictx.CreateRepoCtx(), CollectionName, id) }, }) //设备输出管理 CollectionOutput := "queenter-outputs" CreateCRUD(router, "/queenter/output", &CRUDOption{ Collection: CollectionOutput, NewModel: func(c *gin.Context, apictx *ApiSession) (interface{}, error) { hub := &model.DeviceOutput{} c.ShouldBindJSON(hub) hub.CreateTime = time.Now() hub.UserId, _ = primitive.ObjectIDFromHex(apictx.User.Parent) if hub.UserId == primitive.NilObjectID { return nil, NewError("参数不合法!") } if hub.Type != "sku3d" && hub.Type != "queenmat" { return nil, NewError("type 只支持 sku3d, queenmat") } if hub.Type == "sku3d" { hub.Name = "sku3d账号" if len(hub.Thumbnail) < 1 { hub.Thumbnail = "https://sku3d-test.obs.cn-east-3.myhuaweicloud.com/usercenter/png/1660096358418mwS8hW_256.png" } } else if hub.Type == "queenmat" { hub.Name = "材质库" if len(hub.Thumbnail) < 1 { hub.Thumbnail = "https://sku3d-test.obs.cn-east-3.myhuaweicloud.com/avatar/queenter2.png" } } return hub, nil }, EmtyModel: func(c *gin.Context, apictx *ApiSession) interface{} { return &model.DeviceOutput{} }, SearchFilter: func(c *gin.Context, apictx *ApiSession, query map[string]interface{}) map[string]interface{} { userId, _ := primitive.ObjectIDFromHex(apictx.User.Parent) return map[string]interface{}{"userId": userId} }, JWT: true, SearchProject: []string{"name", "thumbnail", "type", "createTime", "queenMatId", "sku3dUserId"}, Remove: func(c *gin.Context, apictx *ApiSession, id string) (interface{}, error) { return repo.RepoDeleteDoc(apictx.CreateRepoCtx(), CollectionOutput, id) }, }) router.POSTJWT("/queenter/ouput/sku3dinfo", func(c *gin.Context, apictx *ApiSession) (interface{}, error) { body := &struct { LoginName string }{} c.ShouldBindJSON(body) if len(body.LoginName) < 1 { return nil, fmt.Errorf("sku3d账号不能为空") } user := &model.User{} err := bus.NatsCenter.RequestApi("user.op.info", &map[string]string{"loginName": body.LoginName}, 5*time.Second, user) if err != nil { return nil, err } return map[string]string{"name": user.Name, "avatar": user.Avatar, "id": user.Id.Hex()}, nil }) }