product.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package api
  2. import (
  3. "box-cost/db/model"
  4. "box-cost/db/repo"
  5. "box-cost/log"
  6. "errors"
  7. "time"
  8. "github.com/gin-gonic/gin"
  9. "go.mongodb.org/mongo-driver/bson/primitive"
  10. )
  11. func Product(r *GinRouter) {
  12. // 获取生产计划详情
  13. r.GET("/product/detail/:id", ProductDetail)
  14. CreateCRUD(r, "/product", &CRUDOption{
  15. Collection: "product",
  16. NewModel: func(c *gin.Context, apictx *ApiSession) (interface{}, error) {
  17. entity := &model.Product{}
  18. c.ShouldBindJSON(entity)
  19. entity.CreateTime = time.Now()
  20. entity.UpdateTime = time.Now()
  21. return entity, nil
  22. },
  23. EmtyModel: func(c *gin.Context, apictx *ApiSession) interface{} {
  24. return &model.Product{}
  25. },
  26. JWT: true,
  27. OnUpdate: func(c *gin.Context, apictx *ApiSession, entity interface{}) {
  28. product := entity.(*model.Product)
  29. product.UpdateTime = time.Now()
  30. },
  31. SearchProject: []string{"name", "unit", "norm", "price", "category", "remark"},
  32. })
  33. }
  34. func ProductDetail(c *gin.Context, apictx *ApiSession) (interface{}, error) {
  35. productId := c.Param("id")
  36. id, err := primitive.ObjectIDFromHex(productId)
  37. if err != nil {
  38. return nil, errors.New("非法id")
  39. }
  40. var product model.Product
  41. option := &repo.DocSearchOptions{
  42. CollectName: repo.CollectionProduct,
  43. Query: repo.Map{"_id": id},
  44. }
  45. found, err := repo.RepoSeachDoc(apictx.CreateRepoCtx(), option, &product)
  46. if !found || err != nil {
  47. log.Info(err)
  48. return nil, errors.New("数据未找到")
  49. }
  50. return product, nil
  51. }