1. GetAllCategorysList

  1. func (s *GoodsServer) GetAllCategorysList(context.Context, *emptypb.Empty) (*proto.CategoryListResponse, error){
  2. /*
  3. [
  4. {
  5. "id":xxx,
  6. "name":"",
  7. "level":1,
  8. "is_tab":false,
  9. "parent":13xxx,
  10. "sub_category":[
  11. "id":xxx,
  12. "name":"",
  13. "level":1,
  14. "is_tab":false,
  15. "sub_category":[]
  16. ]
  17. }
  18. ]
  19. */
  20. var categorys []model.Category
  21. global.DB.Where(&model.Category{Level: 1}).Preload("SubCategory.SubCategory").Find(&categorys)
  22. b, _ := json.Marshal(&categorys)
  23. return &proto.CategoryListResponse{JsonData: string(b)}, nil
  24. }

2. GetSubCategory

  1. func (s *GoodsServer) GetSubCategory(ctx context.Context, req *proto.CategoryListRequest) (*proto.SubCategoryListResponse, error) {
  2. categoryListResponse := proto.SubCategoryListResponse{}
  3. var category model.Category
  4. if result := global.DB.First(&category, req.Id); result.RowsAffected == 0{
  5. return nil, status.Errorf(codes.NotFound, "商品分类不存在")
  6. }
  7. categoryListResponse.Info = &proto.CategoryInfoResponse{
  8. Id: category.ID,
  9. Name: category.Name,
  10. Level: category.Level,
  11. IsTab: category.IsTab,
  12. ParentCategory: category.ParentCategoryID,
  13. }
  14. var subCategorys []model.Category
  15. var subCategoryResponse []*proto.CategoryInfoResponse
  16. //preloads := "SubCategory"
  17. //if category.Level == 1 {
  18. // preloads = "SubCategory.SubCategory"
  19. //}
  20. global.DB.Where(&model.Category{ParentCategoryID: req.Id}).Find(&subCategorys)
  21. for _, subCategory := range subCategorys {
  22. subCategoryResponse = append(subCategoryResponse, &proto.CategoryInfoResponse{
  23. Id: subCategory.ID,
  24. Name: subCategory.Name,
  25. Level: subCategory.Level,
  26. IsTab: subCategory.IsTab,
  27. ParentCategory: subCategory.ParentCategoryID,
  28. })
  29. }
  30. categoryListResponse.SubCategorys = subCategoryResponse
  31. return &categoryListResponse, nil
  32. }

3. CreateCategory

  1. func (s *GoodsServer) CreateCategory(ctx context.Context, req *proto.CategoryInfoRequest) (*proto.CategoryInfoResponse, error) {
  2. category := model.Category{}
  3. category.Name = req.Name
  4. category.Level = req.Level
  5. if req.Level != 1 {
  6. category.ParentCategoryID = req.ParentCategory
  7. }
  8. category.IsTab = req.IsTab
  9. global.DB.Save(&category)
  10. return &proto.CategoryInfoResponse{Id:int32(category.ID)}, nil
  11. }

4. DeleteCategory

  1. func (s *GoodsServer) DeleteCategory(ctx context.Context, req *proto.DeleteCategoryRequest) (*emptypb.Empty, error) {
  2. if result := global.DB.Delete(&model.Category{}, req.Id); result.RowsAffected == 0 {
  3. return nil, status.Errorf(codes.NotFound, "商品分类不存在")
  4. }
  5. return &emptypb.Empty{}, nil
  6. }

5. UpdateCategory

  1. func (s *GoodsServer) UpdateCategory(ctx context.Context, req *proto.CategoryInfoRequest) (*emptypb.Empty, error) {
  2. var category model.Category
  3. if result := global.DB.First(&category, req.Id); result.RowsAffected == 0 {
  4. return nil, status.Errorf(codes.NotFound, "商品分类不存在")
  5. }
  6. if req.Name != "" {
  7. category.Name = req.Name
  8. }
  9. if req.ParentCategory != 0 {
  10. category.ParentCategoryID = req.ParentCategory
  11. }
  12. if req.Level != 0 {
  13. category.Level = req.Level
  14. }
  15. if req.IsTab {
  16. category.IsTab = req.IsTab
  17. }
  18. global.DB.Save(&category)
  19. return &emptypb.Empty{}, nil
  20. }