Browse Source

add traing cms api

xuchaolang 6 years ago
parent
commit
ba6772a241

+ 13 - 8
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/ProductController.java

@@ -4,14 +4,8 @@ import cn.rankin.cmsweb.service.product.ProductService;
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
 import cn.rankin.common.utils.util.BeanUtil;
-import cn.rankin.data.api.product.dto.CourseDTO;
-import cn.rankin.data.api.product.dto.PackageDTO;
-import cn.rankin.data.api.product.dto.ProductSearchDTO;
-import cn.rankin.data.api.product.dto.SupportDTO;
-import cn.rankin.data.api.product.vo.CourseVo;
-import cn.rankin.data.api.product.vo.PackageVo;
-import cn.rankin.data.api.product.vo.ProductVo;
-import cn.rankin.data.api.product.vo.SupportVo;
+import cn.rankin.data.api.product.dto.*;
+import cn.rankin.data.api.product.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -62,6 +56,17 @@ public class ProductController {
         return productService.updatePackage(packageDTO);
     }
 
+    @RequestMapping(value = "/training", method = RequestMethod.POST)
+    public APIResult<TrainingItemVo> createTraining(@RequestBody TrainingDTO trainingDTO) {
+        return productService.createTraining(trainingDTO);
+    }
+
+    @RequestMapping(value = "/training", method = RequestMethod.PUT)
+    public APIResult<TrainingItemVo> updateTraining(@RequestBody TrainingDTO trainingDTO) {
+        return productService.updateTraining(trainingDTO);
+    }
+
+
     @RequestMapping(value = "/{productId}", method = RequestMethod.DELETE)
     public APIResult delete(@PathVariable("productId") String productId) {
         return productService.delete(productId);

+ 8 - 6
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/ProductService.java

@@ -2,15 +2,11 @@ package cn.rankin.cmsweb.service.product;
 
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.common.utils.enums.ProductTypeEnum;
 import cn.rankin.data.api.product.dto.CourseDTO;
 import cn.rankin.data.api.product.dto.PackageDTO;
 import cn.rankin.data.api.product.dto.SupportDTO;
-import cn.rankin.data.api.product.entity.Product;
-import cn.rankin.data.api.product.vo.CourseVo;
-import cn.rankin.data.api.product.vo.PackageVo;
-import cn.rankin.data.api.product.vo.ProductVo;
-import cn.rankin.data.api.product.vo.SupportVo;
+import cn.rankin.data.api.product.dto.TrainingDTO;
+import cn.rankin.data.api.product.vo.*;
 import org.springframework.cloud.netflix.feign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 
@@ -44,6 +40,12 @@ public interface ProductService {
     @RequestMapping(value = "/product/package", method = RequestMethod.PUT)
     APIResult<PackageVo> updatePackage(@RequestBody PackageDTO packageDTO);
 
+    @RequestMapping(value = "/product/training", method = RequestMethod.POST)
+    APIResult<TrainingItemVo> createTraining(@RequestBody TrainingDTO trainingDTO);
+
+    @RequestMapping(value = "/product/training", method = RequestMethod.PUT)
+    APIResult<TrainingItemVo> updateTraining(@RequestBody TrainingDTO trainingDTO);
+
     @RequestMapping(value = "/product/{id}", method = RequestMethod.DELETE)
     APIResult delete(@PathVariable("id") String id);
 

+ 31 - 3
rankin-common-utils/src/main/java/cn/rankin/common/utils/api/annotation/SerializedField.java

@@ -1,4 +1,32 @@
-package cn.rankin.common.utils.api.view;
+package cn.rankin.common.utils.api.annotation;
 
-public class SerializedField {
-}
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/*
+    Filetered Json Annotation
+ */
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface SerializedField {
+    /**
+     * 需要返回的字段
+     * @return
+     */
+    String[] includes() default {};
+
+    /**
+     * 需要去除的字段
+     * @return
+     */
+    String[] excludes() default {};
+
+    /**
+     * 数据是否需要加密
+     * @return
+     */
+    boolean encode() default true;
+}

+ 31 - 1
rankin-data-api/src/main/java/cn/rankin/data/api/product/dto/TrainingDTO.java

@@ -1,4 +1,34 @@
 package cn.rankin.data.api.product.dto;
 
-public class TrainingDTO {
+import cn.rankin.common.utils.enums.BaseStatusEnum;
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@ToString
+public class TrainingDTO implements Serializable {
+
+    private String id;
+
+    private String code;
+
+    private String title;
+
+    private String coverUrl;
+
+    private List<String> imgList;
+
+    private String cpId;
+
+    private String dateDesc;
+
+    private Date openTime;
+
+    private Date closeTime;
+
+    private BaseStatusEnum status;
 }

+ 0 - 4
rankin-data-api/src/main/java/cn/rankin/data/api/product/entity/Training.java

@@ -1,7 +1,6 @@
 package cn.rankin.data.api.product.entity;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
-import cn.rankin.common.utils.enums.ProductTypeEnum;
 import cn.rankin.common.utils.jpa.ListAttributeConverter;
 import lombok.Data;
 import lombok.ToString;
@@ -40,9 +39,6 @@ public class Training implements Serializable {
     @Column(name = "cp_id")
     private String cpId;
 
-    @Enumerated(EnumType.ORDINAL)
-    private ProductTypeEnum type;
-
     @Column
     @Enumerated(EnumType.ORDINAL)
     private BaseStatusEnum status;

+ 1 - 0
rankin-data-api/src/main/java/cn/rankin/data/api/product/vo/TrainingItemVo.java

@@ -29,4 +29,5 @@ public class TrainingItemVo implements Serializable {
     private Date openTime;
 
     private Date closeTime;
+
 }

+ 2 - 3
rankin-product-service/src/main/java/cn/rankin/productservice/controller/TrainingController.java

@@ -1,7 +1,6 @@
-package cn.rankin.productservice.controller.app;
+package cn.rankin.productservice.controller;
 
 import cn.rankin.common.utils.api.model.APIResult;
-import cn.rankin.data.api.product.entity.Training;
 import cn.rankin.data.api.product.vo.TrainingItemVo;
 import cn.rankin.productservice.code.ProductServiceAPICode;
 import cn.rankin.productservice.service.app.ItemService;
@@ -9,7 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 @RestController
-@RequestMapping(value = "/app/training")
+@RequestMapping(value = "/training")
 public class TrainingController {
 
     @Autowired

+ 7 - 7
rankin-product-service/src/main/java/cn/rankin/productservice/controller/cms/ProductController.java

@@ -3,14 +3,9 @@ package cn.rankin.productservice.controller.cms;
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
 import cn.rankin.common.utils.enums.BaseOrderEnum;
-import cn.rankin.data.api.product.dto.CourseDTO;
-import cn.rankin.data.api.product.dto.PackageDTO;
-import cn.rankin.data.api.product.dto.ProductSearchDTO;
-import cn.rankin.data.api.product.dto.SupportDTO;
-import cn.rankin.data.api.product.entity.Course;
+import cn.rankin.data.api.product.dto.*;
+import cn.rankin.data.api.product.entity.*;
 import cn.rankin.data.api.product.entity.Package;
-import cn.rankin.data.api.product.entity.Product;
-import cn.rankin.data.api.product.entity.Support;
 import cn.rankin.productservice.service.ProductService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -89,6 +84,11 @@ public class ProductController {
         return productService.getPackage(productId);
     }
 
+    @RequestMapping(value = "/training", method = RequestMethod.POST)
+    public APIResult<Training> createTraining(@RequestBody TrainingDTO dto) {
+        return productService.create(dto);
+    }
+
     @RequestMapping(value = "/{productId}", method = RequestMethod.DELETE)
     public APIResult delete(@PathVariable("productId") String productId) {
         return productService.delete(productId);

+ 33 - 4
rankin-product-service/src/main/java/cn/rankin/productservice/service/ProductService.java

@@ -8,10 +8,9 @@ import cn.rankin.common.utils.util.JpaSortUtil;
 import cn.rankin.data.api.product.dto.CourseDTO;
 import cn.rankin.data.api.product.dto.PackageDTO;
 import cn.rankin.data.api.product.dto.SupportDTO;
-import cn.rankin.data.api.product.entity.Course;
+import cn.rankin.data.api.product.dto.TrainingDTO;
+import cn.rankin.data.api.product.entity.*;
 import cn.rankin.data.api.product.entity.Package;
-import cn.rankin.data.api.product.entity.Product;
-import cn.rankin.data.api.product.entity.Support;
 import cn.rankin.productservice.code.ProductServiceAPICode;
 import cn.rankin.productservice.repository.MerchantProductRepository;
 import cn.rankin.productservice.repository.ProductRepository;
@@ -42,6 +41,9 @@ public class ProductService {
     @Autowired
     private PackageService packageService;
 
+    @Autowired
+    private TrainingService trainingService;
+
     public APIResult<Page<Product>> search(Product product, Integer pageNo, Integer pageSize, LinkedHashMap<String, BaseOrderEnum> sort) {
         Long count = productRepository.count(product);
         Page<Product> page = new Page<>(count, pageNo, pageSize);
@@ -70,8 +72,11 @@ public class ProductService {
             return supportService.getSupport(productId);
         }else if (ProductTypeEnum.PACKAGE.equals(type)) {
             return packageService.getPackage(productId);
+        }else if (ProductTypeEnum.TRAINING.equals(type)) {
+            return trainingService.get(productId);
         }
 
+
         return APIResult.error(ProductServiceAPICode.NOT_EXISTS);
     }
 
@@ -95,7 +100,9 @@ public class ProductService {
             supportService.delete(productId);
         }else if (type.equals(ProductTypeEnum.PACKAGE)){
             packageService.deletePackage(productId);
-        }else {
+        }else if (type.equals(ProductTypeEnum.TRAINING)){
+            trainingService.delete(productId);
+        }else{
         }
 
         merchantProductRepository.deleteByPid(productId);
@@ -147,6 +154,17 @@ public class ProductService {
     }
 
     @Transactional
+    public APIResult<Training> create(TrainingDTO trainingDTO) {
+        APIResult<Training> targetAPIResult = trainingService.create(trainingDTO);
+        if (targetAPIResult.getSuccess()) {
+            Product product = convert(targetAPIResult.getData());
+            productRepository.save(product);
+        }
+
+        return targetAPIResult;
+    }
+
+    @Transactional
     public APIResult<Support> update(SupportDTO supportDTO) {
         APIResult<Support> supportAPIResult = supportService.update(supportDTO);
         if (supportAPIResult.getSuccess()) {
@@ -168,6 +186,17 @@ public class ProductService {
         return packageAPIResult;
     }
 
+    @Transactional
+    public APIResult<Training> update(TrainingDTO trainingDTO) {
+        APIResult<Training> targetAPIResult = trainingService.update(trainingDTO);
+        if (targetAPIResult.getSuccess()) {
+            Product product = convert(targetAPIResult.getData());
+            productRepository.update(product);
+        }
+
+        return targetAPIResult;
+    }
+
     public APIResult<List<Product>> findByPids(List<String> pidList) {
         List<Product> productList = productRepository.findByPids(pidList);
         return APIResult.ok(productList);

+ 71 - 0
rankin-product-service/src/main/java/cn/rankin/productservice/service/TrainingService.java

@@ -1,4 +1,75 @@
 package cn.rankin.productservice.service;
 
+import cn.rankin.common.utils.api.model.APICode;
+import cn.rankin.common.utils.api.model.APIResult;
+import cn.rankin.data.api.product.dto.TrainingDTO;
+import cn.rankin.data.api.product.entity.Training;
+import cn.rankin.productservice.repository.ProductRepository;
+import cn.rankin.productservice.repository.TrainingRepository;
+import cn.rankin.productservice.utils.DTOConverter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.transaction.Transactional;
+
+@Service
 public class TrainingService {
+    @Autowired
+    private TrainingRepository repo;
+
+    @Autowired
+    private ProductRepository productRepository;
+
+
+    @Transactional
+    public APIResult<Training> create(TrainingDTO dto) {
+        String code = dto.getCode();
+        if (repo.countByCode(code) > 0L) {
+            return APIResult.error(APICode.ALREADY_EXISTS);
+        }
+
+        Training entity = DTOConverter.convert(dto);
+        Training result = repo.save(entity);
+
+        return APIResult.ok(result);
+    }
+
+    public APIResult get(String pid){
+        /*
+        TODO
+         */
+        Training entity = repo.find(pid);
+        if (null == entity){
+            return APIResult.error(APICode.NOT_EXISTS);
+        }
+
+        return APIResult.ok(entity);
+    }
+
+    @Transactional
+    public APIResult delete(String pid){
+        /*
+        TODO
+         */
+        Integer count = repo.deleteById(pid);
+        if (count > 0){
+            return APIResult.ok(true);
+        }
+
+        return APIResult.error(APICode.NOT_EXISTS);
+    }
+
+    @Transactional
+    public APIResult update(TrainingDTO dto){
+
+        /*
+        TODO
+         */
+
+        Training entity = DTOConverter.convert(dto);
+        Training result = repo.update(entity);
+
+        return APIResult.ok(result);
+    }
+
 }

+ 17 - 0
rankin-product-service/src/main/java/cn/rankin/productservice/utils/DTOConverter.java

@@ -123,6 +123,17 @@ public class DTOConverter {
         return product;
     }
 
+    public static Product convert(Training obj) {
+        Product product = new Product();
+        product.setId(obj.getId());
+        product.setPid(obj.getId());
+        product.setCode(obj.getCode());
+        product.setName(obj.getTitle());
+        product.setType(ProductTypeEnum.TRAINING);
+        product.setStatus(obj.getStatus());
+        return product;
+    }
+
     public static Goods convert(GoodsDTO goodsDTO) {
         Goods goods = new Goods();
         BeanUtils.copyProperties(goodsDTO, goods);
@@ -138,4 +149,10 @@ public class DTOConverter {
         return pkg;
     }
 
+    public static Training convert(TrainingDTO dto) {
+        Training obj = new Training();
+        BeanUtils.copyProperties(dto, obj);
+        return obj;
+    }
+
 }