package api import ( "3dshow/db/model" "3dshow/db/repo" "errors" "time" "github.com/gin-gonic/gin" "go.mongodb.org/mongo-driver/bson/primitive" ) func Address(r *GinRouter) { CreateCRUD(r, "/address", &CRUDOption{ Collection: repo.CollectionAddress, NewModel: func(c *gin.Context, apictx *ApiSession) (interface{}, error) { entity := &model.Address{} c.ShouldBindJSON(entity) entity.CreateTime = time.Now() _userId := apictx.User.ID userId, err := primitive.ObjectIDFromHex(_userId) if err != nil { return nil, errors.New("非法用户") } entity.UserId = userId first, _ := repo.RepoCountDoc(apictx.CreateRepoCtx(), repo.CollectionAddress, repo.Map{"userId": userId}) if first > 0 { entity.Defualt = 0 } else { entity.Defualt = 1 } return entity, nil }, EmtyModel: func(c *gin.Context, apictx *ApiSession) interface{} { return &model.Address{} }, JWT: true, SearchFilter: func(c *gin.Context, apictx *ApiSession, query map[string]interface{}) map[string]interface{} { _userId := apictx.User.ID userId, err := primitive.ObjectIDFromHex(_userId) if err != nil { // 6369f4b028c4bf8b14f47a6b invalidId, _ := primitive.ObjectIDFromHex("6369f4b028c4bf8b14f47a6b") return repo.Map{"userId": invalidId} } return repo.Map{"userId": userId} }, SearchProject: []string{"area", "addr", "contact", "phone", "defualt", "createTime"}, DetailProject: []string{"area", "addr", "contact", "phone", "defualt", "createTime"}, }) }