Procházet zdrojové kódy

complete product and goods recoding

huodongdong před 7 roky
rodič
revize
3b6e896596
100 změnil soubory, kde provedl 641 přidání a 1069 odebrání
  1. 1 1
      rankin-api-web/src/main/java/cn/rankin/apiweb/intercepter/LoginInterceptor.java
  2. 3 3
      rankin-api-web/src/main/java/cn/rankin/apiweb/service/auth/SimpleAuthService.java
  3. 0 45
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/CourseController.java
  4. 31 0
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/GoodsController.java
  5. 1 1
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/GroupController.java
  6. 0 16
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/ItemController.java
  7. 1 1
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/LessonController.java
  8. 72 0
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/MerchantProductController.java
  9. 58 0
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/ProductController.java
  10. 0 44
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/SupportController.java
  11. 1 1
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/TagController.java
  12. 1 1
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/WareController.java
  13. 22 0
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/resource/AliOSSController.java
  14. 3 3
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/user/CampusController.java
  15. 3 3
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/user/CmsUserController.java
  16. 4 4
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/user/MerchantController.java
  17. 3 5
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/user/TerminalUserController.java
  18. 1 1
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/security/CmsUserDetailsService.java
  19. 1 1
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/security/JwtAuthenticationTokenFilter.java
  20. 0 29
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/CourseService.java
  21. 23 0
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/GoodsService.java
  22. 1 1
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/GroupService.java
  23. 1 1
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/LessonService.java
  24. 29 0
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/MerchantProductService.java
  25. 39 0
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/ProductService.java
  26. 1 1
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/RecommendService.java
  27. 0 29
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/SupportService.java
  28. 1 1
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/TagService.java
  29. 1 1
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/WareService.java
  30. 1 1
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/proxy/WareServiceProxy.java
  31. 4 0
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/resource/ResourceService.java
  32. 2 3
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/user/CampusService.java
  33. 2 2
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/user/CmsUserService.java
  34. 11 7
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/user/MerchantService.java
  35. 2 2
      rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/user/TerminalUserService.java
  36. 0 6
      rankin-cms-web/src/test/java/cn/rankin/cmsweb/service/product/proxy/WareServiceProxyTest.java
  37. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/api/model/APICode.java
  38. 1 1
      rankin-user-service/src/main/java/cn/rankin/userservice/utils/Constant.java
  39. 0 29
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/CourseSubItemVo.java
  40. 0 63
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/ProductVo.java
  41. 19 8
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/RecommendVo.java
  42. 16 9
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/RecommendVo.java
  43. 8 11
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/RecommendVo.java
  44. 5 13
      rankin-data-api/src/main/java/cn/rankin/data/api/product/entity/Course.java
  45. 3 0
      rankin-data-api/src/main/java/cn/rankin/data/api/product/entity/MerchantProduct.java
  46. 4 1
      rankin-data-api/src/main/java/cn/rankin/data/api/product/entity/ProductTagRelation.java
  47. 4 0
      rankin-data-api/src/main/java/cn/rankin/data/api/product/entity/Support.java
  48. 0 12
      rankin-data-api/src/main/java/cn/rankin/data/api/product/vo/CourseSubItemVo.java
  49. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/CourseVo.java
  50. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/GroupVo.java
  51. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/LessonVo.java
  52. 43 0
      rankin-data-api/src/main/java/cn/rankin/data/api/product/vo/MerchantProductVo.java
  53. 3 0
      rankin-data-api/src/main/java/cn/rankin/data/api/product/vo/ProductVo.java
  54. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/RecommendVo.java
  55. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/SupportVo.java
  56. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/TagVo.java
  57. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/WareVo.java
  58. 25 0
      rankin-data-api/src/main/java/cn/rankin/data/api/resource/OSSSignatureVo.java
  59. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/CampusDTO.java
  60. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/CampusSearchDTO.java
  61. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/CmsUserDTO.java
  62. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/CmsUserSearchDTO.java
  63. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/MerchantDTO.java
  64. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/MerchantSearchDTO.java
  65. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/TerminalUserDTO.java
  66. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/TerminalUserSearchDTO.java
  67. 1 2
      rankin-user-service/src/main/java/cn/rankin/userservice/entity/Campus.java
  68. 1 4
      rankin-user-service/src/main/java/cn/rankin/userservice/entity/CmsUser.java
  69. 2 2
      rankin-user-service/src/main/java/cn/rankin/userservice/entity/Merchant.java
  70. 1 1
      rankin-user-service/src/main/java/cn/rankin/userservice/entity/OperationLog.java
  71. 2 2
      rankin-user-service/src/main/java/cn/rankin/userservice/entity/Resource.java
  72. 1 2
      rankin-user-service/src/main/java/cn/rankin/userservice/entity/Role.java
  73. 1 1
      rankin-user-service/src/main/java/cn/rankin/userservice/entity/TerminalDevice.java
  74. 1 1
      rankin-user-service/src/main/java/cn/rankin/userservice/entity/TerminalUser.java
  75. 1 1
      rankin-user-service/src/main/java/cn/rankin/userservice/entity/UserRole.java
  76. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/user/CampusVo.java
  77. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/user/CmsUserVo.java
  78. 2 2
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/user/MerchantVo.java
  79. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/user/TerminalDeviceVo.java
  80. 1 1
      rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/user/TerminalUserVo.java
  81. 0 182
      rankin-product-service/src/main/java/cn/rankin/productservice/controller/CourseController.java
  82. 36 0
      rankin-product-service/src/main/java/cn/rankin/productservice/controller/GoodsController.java
  83. 1 1
      rankin-product-service/src/main/java/cn/rankin/productservice/controller/LessonController.java
  84. 37 6
      rankin-product-service/src/main/java/cn/rankin/productservice/controller/MerchantProductController.java
  85. 1 0
      rankin-product-service/src/main/java/cn/rankin/productservice/controller/PackageController.java
  86. 35 6
      rankin-product-service/src/main/java/cn/rankin/productservice/controller/ProductController.java
  87. 0 137
      rankin-product-service/src/main/java/cn/rankin/productservice/controller/SupportController.java
  88. 2 2
      rankin-product-service/src/main/java/cn/rankin/productservice/controller/TagController.java
  89. 1 1
      rankin-product-service/src/main/java/cn/rankin/productservice/controller/WareController.java
  90. 0 150
      rankin-product-service/src/main/java/cn/rankin/productservice/proxy/CourseServiceProxy.java
  91. 0 93
      rankin-product-service/src/main/java/cn/rankin/productservice/proxy/MerchantProductServiceProxy.java
  92. 0 70
      rankin-product-service/src/main/java/cn/rankin/productservice/proxy/SupportServiceProxy.java
  93. 4 9
      rankin-product-service/src/main/java/cn/rankin/productservice/repository/CourseRepository.java
  94. 3 3
      rankin-product-service/src/main/java/cn/rankin/productservice/repository/CourseSubRelationRepository.java
  95. 9 4
      rankin-product-service/src/main/java/cn/rankin/productservice/repository/GoodsRepository.java
  96. 2 3
      rankin-product-service/src/main/java/cn/rankin/productservice/repository/LessonRepository.java
  97. 15 2
      rankin-product-service/src/main/java/cn/rankin/productservice/repository/MerchantProductRepository.java
  98. 1 1
      rankin-product-service/src/main/java/cn/rankin/productservice/repository/PackageItemRelationRepository.java
  99. 6 0
      rankin-product-service/src/main/java/cn/rankin/productservice/repository/ProductRepository.java
  100. 0 0
      rankin-product-service/src/main/java/cn/rankin/productservice/repository/ProductTagRelationRepository.java

+ 1 - 1
rankin-api-web/src/main/java/cn/rankin/apiweb/intercepter/LoginInterceptor.java

@@ -90,7 +90,7 @@ public class LoginInterceptor implements HandlerInterceptor {
             responseOutWithJson(request, response);
             return false;
         }
-        //查询到结果 如果存在 token 对应的 user
+        //查询到结果 如果存在 token 对应的 vo
         // 1.判断 如果有效期小于 2小时
         logger.info("token check success: {}", JSON.toJSONString(du));
 

+ 3 - 3
rankin-api-web/src/main/java/cn/rankin/apiweb/service/auth/SimpleAuthService.java

@@ -11,20 +11,20 @@ public class SimpleAuthService implements AuthService {
 
     @Override
     public AuthResult auth(String userId, String itemId) {
-        log.info("auth user: {}, item: {}", userId, itemId);
+        log.info("auth vo: {}, item: {}", userId, itemId);
         AuthResult auth = new AuthResult(itemId, userId, 0, 0L, null);
         return auth;
     }
 
     @Override
     public AuthResult add(String userId, String itemId, Integer day) {
-        log.info("add user: {} item: {} day: {}", userId, itemId, day);
+        log.info("add vo: {} item: {} day: {}", userId, itemId, day);
         return new AuthResult(itemId, userId, 0, 0L, null);
     }
 
     @Override
     public AuthResult reduce(String userId, String itemId, Integer day) {
-        log.info("reduce user: {} item: {} day: {}", userId, itemId, day);
+        log.info("reduce vo: {} item: {} day: {}", userId, itemId, day);
         return new AuthResult(itemId, userId, 0, 0L, null);
     }
 }

+ 0 - 45
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/CourseController.java

@@ -1,45 +0,0 @@
-package cn.rankin.cmsweb.controller.product;
-
-import cn.rankin.cmsweb.service.product.CourseService;
-import cn.rankin.common.utils.api.model.APIResult;
-import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.data.api.product.dto.CourseDTO;
-import cn.rankin.common.utils.dto.search.SearchDTO;
-import cn.rankin.common.utils.util.BeanUtil;
-import cn.rankin.common.utils.vo.product.CourseVo;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-@RestController
-@RequestMapping(value = "/course")
-public class CourseController {
-
-    @Autowired
-    private CourseService courseService;
-
-    @RequestMapping(value = "/list", method = RequestMethod.GET)
-    public APIResult<Page<CourseVo>> search(SearchDTO searchDTO) {
-        return courseService.search(BeanUtil.convertToMap(searchDTO));
-    }
-
-    @RequestMapping(method = RequestMethod.POST)
-    public APIResult<CourseVo> create(@RequestBody CourseDTO courseDTO) {
-        return courseService.create(courseDTO);
-    }
-
-    @RequestMapping(method = RequestMethod.PUT)
-    public APIResult<CourseVo> update(@RequestBody CourseDTO courseDTO) {
-        return courseService.update(courseDTO);
-    }
-
-    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
-    public APIResult delete(@PathVariable("id") String id) {
-        return courseService.delete(id);
-    }
-
-    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
-    public APIResult<CourseVo> getCourse(@PathVariable("id") String id) {
-        return courseService.getCourse(id);
-    }
-
-}

+ 31 - 0
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/GoodsController.java

@@ -0,0 +1,31 @@
+package cn.rankin.cmsweb.controller.product;
+
+import cn.rankin.cmsweb.service.product.GoodsService;
+import cn.rankin.common.utils.api.model.APIResult;
+import cn.rankin.data.api.product.dto.GoodsDTO;
+import cn.rankin.data.api.product.entity.Goods;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping(value = "/goods")
+public class GoodsController {
+
+    @Autowired
+    private GoodsService goodsService;
+
+    @RequestMapping(method = RequestMethod.POST)
+    public APIResult<Goods> create(@RequestBody GoodsDTO goodsDTO) {
+        return goodsService.create(goodsDTO);
+    }
+
+    @RequestMapping(method = RequestMethod.PUT)
+    public APIResult<Goods> update(@RequestBody GoodsDTO goodsDTO) {
+        return goodsService.update(goodsDTO);
+    }
+
+    @RequestMapping(value = "/{goodsId}", method = RequestMethod.DELETE)
+    public APIResult<Boolean> delete(@PathVariable("goodsId") String goodsId) {
+        return goodsService.delete(goodsId);
+    }
+}

+ 1 - 1
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/GroupController.java

@@ -6,7 +6,7 @@ import cn.rankin.common.utils.api.page.Page;
 import cn.rankin.data.api.product.dto.GroupDTO;
 import cn.rankin.common.utils.dto.search.GroupSearchDTO;
 import cn.rankin.common.utils.util.BeanUtil;
-import cn.rankin.common.utils.vo.product.GroupVo;
+import cn.rankin.data.api.product.vo.GroupVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 

+ 0 - 16
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/ItemController.java

@@ -1,16 +0,0 @@
-package cn.rankin.cmsweb.controller.product;
-
-import cn.rankin.cmsweb.assist.resolver.NeedUser;
-import cn.rankin.cmsweb.code.CmsWebAPICode;
-import cn.rankin.cmsweb.entity.UserDetails;
-import cn.rankin.common.utils.api.model.APIResult;
-import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.common.utils.util.BeanUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-@RestController
-@RequestMapping(value = "/item")
-public class ItemController {
-
- }

+ 1 - 1
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/LessonController.java

@@ -6,7 +6,7 @@ import cn.rankin.common.utils.api.page.Page;
 import cn.rankin.data.api.product.dto.LessonDTO;
 import cn.rankin.common.utils.dto.search.SearchDTO;
 import cn.rankin.common.utils.util.BeanUtil;
-import cn.rankin.common.utils.vo.product.LessonVo;
+import cn.rankin.data.api.product.vo.LessonVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 

+ 72 - 0
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/MerchantProductController.java

@@ -0,0 +1,72 @@
+package cn.rankin.cmsweb.controller.product;
+
+import cn.rankin.cmsweb.service.product.MerchantProductService;
+import cn.rankin.cmsweb.service.user.MerchantService;
+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.MerchantProductDTO;
+import cn.rankin.data.api.product.dto.MerchantProductSearchDTO;
+import cn.rankin.data.api.product.vo.MerchantProductVo;
+import cn.rankin.data.api.user.vo.MerchantVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping(value = "/merchant/products")
+public class MerchantProductController {
+
+    @Autowired
+    private MerchantProductService merchantProductService;
+
+    @Autowired
+    private MerchantService merchantService;
+
+    @RequestMapping(method = RequestMethod.GET)
+    public APIResult<Page<MerchantProductVo>> search(MerchantProductSearchDTO searchDTO) {
+        APIResult<Page<MerchantProductVo>> pageAPIResult = merchantProductService.search(BeanUtil.convertToMap(searchDTO));
+        List<MerchantProductVo> merchantProductVoList = pageAPIResult.getData().getList();
+        if (!CollectionUtils.isEmpty(merchantProductVoList)) {
+            List<String> merchantIdList = new ArrayList<>();
+            merchantProductVoList.forEach(merchantProductVo -> {
+                String merchantId = merchantProductVo.getMerchantId();
+                if (!merchantIdList.contains(merchantId)) {
+                    merchantIdList.add(merchantId);
+                }
+            });
+
+            APIResult<Map<String, MerchantVo>> mapAPIResult = merchantService.findByIds(merchantIdList);
+            Map<String, MerchantVo> merchantVoMap = mapAPIResult.getData();
+            if (!CollectionUtils.isEmpty(merchantVoMap)) {
+                for (MerchantProductVo merchantProductVo : merchantProductVoList) {
+                    String merchantId = merchantProductVo.getMerchantId();
+                    MerchantVo merchantVo = merchantVoMap.get(merchantId);
+                    if (merchantVo != null) {
+                        merchantProductVo.setMerchantName(merchantVo.getName());
+                    }
+                }
+            }
+        }
+        return pageAPIResult;
+    }
+
+    @RequestMapping(value = "/detail", method = RequestMethod.GET)
+    public APIResult<MerchantProductVo> getProduct(@RequestParam("productId") String productId, @RequestParam("merchantId") String merchantId) {
+        return merchantProductService.getProduct(productId, merchantId);
+    }
+
+    @RequestMapping(value = "/status", method = RequestMethod.PUT)
+    public APIResult<Boolean> change(@RequestBody MerchantProductDTO merchantProductDTO) {
+        return merchantProductService.change(merchantProductDTO);
+    }
+
+    @RequestMapping(value = "/tags", method = RequestMethod.PUT)
+    public APIResult<MerchantProductVo> mountTags(@RequestBody MerchantProductDTO productDTO) {
+        return merchantProductService.mountTags(productDTO);
+    }
+}

+ 58 - 0
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/ProductController.java

@@ -0,0 +1,58 @@
+package cn.rankin.cmsweb.controller.product;
+
+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.enums.ProductTypeEnum;
+import cn.rankin.common.utils.util.BeanUtil;
+import cn.rankin.data.api.product.dto.CourseDTO;
+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.ProductVo;
+import cn.rankin.data.api.product.vo.SupportVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping(value = "/product")
+public class ProductController {
+
+    @Autowired
+    private ProductService productService;
+
+    @RequestMapping(method = RequestMethod.GET)
+    public APIResult<Page<ProductVo>> search(ProductSearchDTO searchDTO) {
+        return productService.search(BeanUtil.convertToMap(searchDTO));
+    }
+
+    @RequestMapping(value = "/{productId}", method = RequestMethod.GET)
+    public APIResult getProduct(@PathVariable("productId") String productId) {
+        return productService.getProduct(productId);
+    }
+
+    @RequestMapping(value = "/course", method = RequestMethod.PUT)
+    public APIResult<CourseVo> updateCourse(@RequestBody CourseDTO courseDTO) {
+        return productService.updateCourse(courseDTO);
+    }
+
+    @RequestMapping(value = "/course", method = RequestMethod.POST)
+    public APIResult<CourseVo> createCourse(@RequestBody CourseDTO courseDTO) {
+        return productService.createCourse(courseDTO);
+    }
+
+    @RequestMapping(value = "/support", method = RequestMethod.POST)
+    public APIResult<SupportVo> createSupport(@RequestBody SupportDTO supportDTO) {
+        return productService.createSupport(supportDTO);
+    }
+
+    @RequestMapping(value = "/support", method = RequestMethod.PUT)
+    public APIResult<SupportVo> updateSupport(@RequestBody SupportDTO supportDTO) {
+        return productService.updateSupport(supportDTO);
+    }
+
+    @RequestMapping(value = "/{productId}", method = RequestMethod.DELETE)
+    public APIResult delete(@PathVariable("productId") String productId) {
+        return productService.delete(productId);
+    }
+}

+ 0 - 44
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/SupportController.java

@@ -1,44 +0,0 @@
-package cn.rankin.cmsweb.controller.product;
-
-import cn.rankin.cmsweb.service.product.SupportService;
-import cn.rankin.common.utils.api.model.APIResult;
-import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.data.api.product.dto.SupportDTO;
-import cn.rankin.common.utils.dto.search.SearchDTO;
-import cn.rankin.common.utils.util.BeanUtil;
-import cn.rankin.common.utils.vo.product.SupportVo;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-@RestController
-@RequestMapping(value = "/support")
-public class SupportController {
-
-    @Autowired
-    private SupportService supportService;
-
-    @RequestMapping(value = "/list", method = RequestMethod.GET)
-    public APIResult<Page<SupportVo>> search(SearchDTO searchDTO) {
-        return supportService.search(BeanUtil.convertToMap(searchDTO));
-    }
-
-    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
-    public APIResult<SupportVo> getSupport(@PathVariable("id") String id) {
-        return supportService.getSupport(id);
-    }
-
-    @RequestMapping(method = RequestMethod.POST)
-    public APIResult<SupportVo> create(@RequestBody SupportDTO supportDTO) {
-        return supportService.create(supportDTO);
-    }
-
-    @RequestMapping(method = RequestMethod.PUT)
-    public APIResult<SupportVo> update(@RequestBody SupportDTO supportDTO) {
-        return supportService.update(supportDTO);
-    }
-
-    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
-    public APIResult<Boolean> delete(@PathVariable("id") String id) {
-        return supportService.delete(id);
-    }
-}

+ 1 - 1
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/TagController.java

@@ -6,7 +6,7 @@ import cn.rankin.common.utils.api.page.Page;
 import cn.rankin.data.api.product.dto.TagDTO;
 import cn.rankin.common.utils.dto.search.TagSearchDTO;
 import cn.rankin.common.utils.util.BeanUtil;
-import cn.rankin.common.utils.vo.product.TagVo;
+import cn.rankin.data.api.product.vo.TagVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 

+ 1 - 1
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/product/WareController.java

@@ -6,7 +6,7 @@ import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
 import cn.rankin.data.api.product.dto.WareDTO;
 import cn.rankin.common.utils.dto.search.SearchDTO;
-import cn.rankin.common.utils.vo.product.WareVo;
+import cn.rankin.data.api.product.vo.WareVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 

+ 22 - 0
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/resource/AliOSSController.java

@@ -0,0 +1,22 @@
+package cn.rankin.cmsweb.controller.resource;
+
+import cn.rankin.cmsweb.service.resource.ResourceService;
+import cn.rankin.common.utils.api.model.APIResult;
+import cn.rankin.data.api.resource.OSSSignatureVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class AliOSSController {
+
+    @Autowired
+    private ResourceService resourceService;
+
+    @RequestMapping(value = "/oss/signature", method = RequestMethod.GET)
+    public APIResult<OSSSignatureVo> getSign(@RequestParam("fileName") String fileName) {
+        return resourceService.getSign(fileName);
+    }
+}

+ 3 - 3
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/user/CampusController.java

@@ -5,10 +5,10 @@ import cn.rankin.cmsweb.entity.UserDetails;
 import cn.rankin.cmsweb.service.user.CampusService;
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.common.utils.dto.user.CampusDTO;
-import cn.rankin.common.utils.dto.user.CampusSearchDTO;
+import cn.rankin.data.api.user.dto.CampusDTO;
+import cn.rankin.data.api.user.dto.CampusSearchDTO;
 import cn.rankin.common.utils.util.BeanUtil;
-import cn.rankin.common.utils.vo.user.CampusVo;
+import cn.rankin.data.api.user.vo.CampusVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 

+ 3 - 3
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/user/CmsUserController.java

@@ -5,10 +5,10 @@ import cn.rankin.cmsweb.entity.UserDetails;
 import cn.rankin.cmsweb.service.user.CmsUserService;
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.common.utils.dto.user.CmsUserDTO;
-import cn.rankin.common.utils.dto.user.CmsUserSearchDTO;
+import cn.rankin.data.api.user.dto.CmsUserDTO;
+import cn.rankin.data.api.user.dto.CmsUserSearchDTO;
 import cn.rankin.common.utils.util.BeanUtil;
-import cn.rankin.common.utils.vo.user.CmsUserVo;
+import cn.rankin.data.api.user.vo.CmsUserVo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;

+ 4 - 4
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/user/MerchantController.java

@@ -5,11 +5,11 @@ import cn.rankin.cmsweb.service.product.RecommendService;
 import cn.rankin.cmsweb.service.user.MerchantService;
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.common.utils.dto.user.MerchantDTO;
-import cn.rankin.common.utils.dto.user.MerchantSearchDTO;
+import cn.rankin.data.api.user.dto.MerchantDTO;
+import cn.rankin.data.api.user.dto.MerchantSearchDTO;
 import cn.rankin.common.utils.util.BeanUtil;
-import cn.rankin.common.utils.vo.product.RecommendVo;
-import cn.rankin.common.utils.vo.user.MerchantVo;
+import cn.rankin.data.api.product.vo.RecommendVo;
+import cn.rankin.data.api.user.vo.MerchantVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;

+ 3 - 5
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/user/TerminalUserController.java

@@ -5,15 +5,13 @@ import cn.rankin.cmsweb.entity.UserDetails;
 import cn.rankin.cmsweb.service.user.TerminalUserService;
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.common.utils.dto.user.TerminalUserDTO;
-import cn.rankin.common.utils.dto.user.TerminalUserSearchDTO;
+import cn.rankin.data.api.user.dto.TerminalUserDTO;
+import cn.rankin.data.api.user.dto.TerminalUserSearchDTO;
 import cn.rankin.common.utils.util.BeanUtil;
-import cn.rankin.common.utils.vo.user.TerminalUserVo;
+import cn.rankin.data.api.user.vo.TerminalUserVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Map;
-
 @RestController
 @RequestMapping(value = "/user")
 public class TerminalUserController {

+ 1 - 1
rankin-cms-web/src/main/java/cn/rankin/cmsweb/security/CmsUserDetailsService.java

@@ -3,7 +3,7 @@ package cn.rankin.cmsweb.security;
 import cn.rankin.cmsweb.entity.UserDetails;
 import cn.rankin.cmsweb.service.user.CmsUserService;
 import cn.rankin.common.utils.api.model.APIResult;
-import cn.rankin.common.utils.vo.user.CmsUserVo;
+import cn.rankin.data.api.user.vo.CmsUserVo;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

+ 1 - 1
rankin-cms-web/src/main/java/cn/rankin/cmsweb/security/JwtAuthenticationTokenFilter.java

@@ -83,7 +83,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
         //判断先解析 出 username
         logger.debug("checking authentication for cookie {} authToken {} ", JSON.toJSONString(cookie), authToken);
         String username = jwtTokenService.getUsernameFromToken(authToken);
-        logger.debug("checking authentication for user " + username);
+        logger.debug("checking authentication for vo " + username);
         // 如果解析 username 为空 则重新登录
         if (username != null) {
             UserDetails userDetails = null;

+ 0 - 29
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/CourseService.java

@@ -1,29 +0,0 @@
-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.data.api.product.dto.CourseDTO;
-import cn.rankin.common.utils.vo.product.CourseVo;
-import org.springframework.cloud.netflix.feign.FeignClient;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.Map;
-
-@FeignClient(name = "${service.product.name}")
-public interface CourseService {
-
-    @RequestMapping(value = "/course/list", method = RequestMethod.GET)
-    APIResult<Page<CourseVo>> search(@RequestParam Map<String, Object> searchDTO);
-
-    @RequestMapping(value = "/course", method = RequestMethod.POST)
-    APIResult<CourseVo> create(@RequestBody CourseDTO courseDTO);
-
-    @RequestMapping(value = "/course", method = RequestMethod.PUT)
-    APIResult<CourseVo> update(@RequestBody CourseDTO courseDTO);
-
-    @RequestMapping(value = "/course/{id}", method = RequestMethod.DELETE)
-    APIResult delete(@PathVariable("id") String id);
-
-    @RequestMapping(value = "/course/{id}", method = RequestMethod.GET)
-    APIResult<CourseVo> getCourse(@PathVariable("id") String id);
-}

+ 23 - 0
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/GoodsService.java

@@ -0,0 +1,23 @@
+package cn.rankin.cmsweb.service.product;
+
+import cn.rankin.common.utils.api.model.APIResult;
+import cn.rankin.data.api.product.dto.GoodsDTO;
+import cn.rankin.data.api.product.entity.Goods;
+import org.springframework.cloud.netflix.feign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+@FeignClient(name = "${service.product.name}")
+public interface GoodsService {
+
+    @RequestMapping(value = "/goods", method = RequestMethod.POST)
+    APIResult<Goods> create(@RequestBody GoodsDTO goodsDTO);
+
+    @RequestMapping(value = "/goods", method = RequestMethod.PUT)
+    APIResult<Goods> update(@RequestBody GoodsDTO goodsDTO);
+
+    @RequestMapping(value = "/goods/{goodsId}", method = RequestMethod.DELETE)
+    APIResult<Boolean> delete(@PathVariable("goodsId") String goodsId);
+}

+ 1 - 1
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/GroupService.java

@@ -3,7 +3,7 @@ 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.data.api.product.dto.GroupDTO;
-import cn.rankin.common.utils.vo.product.GroupVo;
+import cn.rankin.data.api.product.vo.GroupVo;
 import org.springframework.cloud.netflix.feign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 

+ 1 - 1
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/LessonService.java

@@ -3,7 +3,7 @@ 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.data.api.product.dto.LessonDTO;
-import cn.rankin.common.utils.vo.product.LessonVo;
+import cn.rankin.data.api.product.vo.LessonVo;
 import org.springframework.cloud.netflix.feign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 

+ 29 - 0
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/MerchantProductService.java

@@ -0,0 +1,29 @@
+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.data.api.product.dto.MerchantProductDTO;
+import cn.rankin.data.api.product.vo.MerchantProductVo;
+import org.springframework.cloud.netflix.feign.FeignClient;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Map;
+
+@FeignClient(name = "${service.product.name}")
+public interface MerchantProductService {
+
+    @RequestMapping(value = "/merchant/products", method = RequestMethod.GET)
+    APIResult<Page<MerchantProductVo>> search(@RequestParam Map<String, Object> searchDTO);
+
+    @RequestMapping(value = "/merchant/products/detail", method = RequestMethod.GET)
+    APIResult<MerchantProductVo> getProduct(@RequestParam("productId") String productId, @RequestParam("merchantId") String merchantId);
+
+    @RequestMapping(value = "/merchant/products/status", method = RequestMethod.PUT)
+    APIResult<Boolean> change(@RequestBody MerchantProductDTO merchantProductDTO);
+
+    @RequestMapping(value = "/merchant/products/tags", method = RequestMethod.PUT)
+    APIResult<MerchantProductVo> mountTags(@RequestBody MerchantProductDTO productDTO);
+}

+ 39 - 0
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/ProductService.java

@@ -0,0 +1,39 @@
+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.SupportDTO;
+import cn.rankin.data.api.product.vo.CourseVo;
+import cn.rankin.data.api.product.vo.ProductVo;
+import cn.rankin.data.api.product.vo.SupportVo;
+import org.springframework.cloud.netflix.feign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+@FeignClient(name = "${service.product.name}")
+public interface ProductService {
+
+    @RequestMapping(value = "/product", method = RequestMethod.GET)
+    APIResult<Page<ProductVo>> search(@RequestParam Map<String, Object> searchDTO);
+
+    @RequestMapping(value = "/product/{id}", method = RequestMethod.GET)
+    APIResult getProduct(@PathVariable("id") String id);
+
+    @RequestMapping(value = "/product/course", method = RequestMethod.PUT)
+    APIResult<CourseVo> updateCourse(@RequestBody CourseDTO courseDTO);
+
+    @RequestMapping(value = "/product/course", method = RequestMethod.POST)
+    APIResult<CourseVo> createCourse(@RequestBody CourseDTO courseDTO);
+
+    @RequestMapping(value = "/product/support", method = RequestMethod.PUT)
+    APIResult<SupportVo> updateSupport(@RequestBody SupportDTO supportDTO);
+
+    @RequestMapping(value = "/product/support", method = RequestMethod.POST)
+    APIResult<SupportVo> createSupport(@RequestBody SupportDTO supportDTO);
+
+    @RequestMapping(value = "/product/{id}", method = RequestMethod.DELETE)
+    APIResult delete(@PathVariable("id") String id);
+}

+ 1 - 1
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/RecommendService.java

@@ -1,7 +1,7 @@
 package cn.rankin.cmsweb.service.product;
 
 import cn.rankin.common.utils.api.model.APIResult;
-import cn.rankin.common.utils.vo.product.RecommendVo;
+import cn.rankin.data.api.product.vo.RecommendVo;
 import org.springframework.cloud.netflix.feign.FeignClient;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;

+ 0 - 29
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/SupportService.java

@@ -1,29 +0,0 @@
-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.data.api.product.dto.SupportDTO;
-import cn.rankin.common.utils.vo.product.SupportVo;
-import org.springframework.cloud.netflix.feign.FeignClient;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.Map;
-
-@FeignClient(name = "${service.product.name}")
-public interface SupportService {
-
-    @RequestMapping(value = "/support/list", method = RequestMethod.GET)
-    APIResult<Page<SupportVo>> search(@RequestParam Map<String, Object> searchDTO);
-
-    @RequestMapping(value = "/support/{id}", method = RequestMethod.GET)
-    APIResult<SupportVo> getSupport(@PathVariable("id") String id);
-
-    @RequestMapping(value = "/support", method = RequestMethod.POST)
-    APIResult<SupportVo> create(@RequestBody SupportDTO supportDTO);
-
-    @RequestMapping(value = "/support", method = RequestMethod.PUT)
-    APIResult<SupportVo> update(@RequestBody SupportDTO supportDTO);
-
-    @RequestMapping(value = "/support/{id}", method = RequestMethod.DELETE)
-    APIResult<Boolean> delete(@PathVariable("id") String id);
-}

+ 1 - 1
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/TagService.java

@@ -3,7 +3,7 @@ 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.data.api.product.dto.TagDTO;
-import cn.rankin.common.utils.vo.product.TagVo;
+import cn.rankin.data.api.product.vo.TagVo;
 import org.springframework.cloud.netflix.feign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 

+ 1 - 1
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/WareService.java

@@ -3,7 +3,7 @@ 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.data.api.product.dto.WareDTO;
-import cn.rankin.common.utils.vo.product.WareVo;
+import cn.rankin.data.api.product.vo.WareVo;
 import org.springframework.cloud.netflix.feign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 

+ 1 - 1
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/proxy/WareServiceProxy.java

@@ -7,7 +7,7 @@ import cn.rankin.common.utils.api.page.Page;
 import cn.rankin.data.api.product.dto.WareDTO;
 import cn.rankin.common.utils.dto.search.SearchDTO;
 import cn.rankin.common.utils.util.BeanUtil;
-import cn.rankin.common.utils.vo.product.WareVo;
+import cn.rankin.data.api.product.vo.WareVo;
 import cn.rankin.common.utils.vo.resource.ResourceVo;
 import com.alibaba.fastjson.JSON;
 import lombok.extern.slf4j.Slf4j;

+ 4 - 0
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/resource/ResourceService.java

@@ -4,6 +4,7 @@ import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
 import cn.rankin.common.utils.dto.resource.ResourceDTO;
 import cn.rankin.common.utils.vo.resource.ResourceVo;
+import cn.rankin.data.api.resource.OSSSignatureVo;
 import org.springframework.cloud.netflix.feign.FeignClient;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -24,4 +25,7 @@ public interface ResourceService {
 
     @RequestMapping(value = "/resource/batch", method = RequestMethod.GET)
     APIResult<Map<String, ResourceVo>> getBatch(@RequestParam("id") List<String> ids);
+
+    @RequestMapping(value = "/oss/signature", method = RequestMethod.GET)
+    APIResult<OSSSignatureVo> getSign(@RequestParam("fileName") String fileName);
 }

+ 2 - 3
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/user/CampusService.java

@@ -2,10 +2,9 @@ package cn.rankin.cmsweb.service.user;
 
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.common.utils.dto.user.CampusDTO;
-import cn.rankin.common.utils.vo.user.CampusVo;
+import cn.rankin.data.api.user.dto.CampusDTO;
+import cn.rankin.data.api.user.vo.CampusVo;
 import org.springframework.cloud.netflix.feign.FeignClient;
-import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Map;

+ 2 - 2
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/user/CmsUserService.java

@@ -2,8 +2,8 @@ package cn.rankin.cmsweb.service.user;
 
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.common.utils.dto.user.CmsUserDTO;
-import cn.rankin.common.utils.vo.user.CmsUserVo;
+import cn.rankin.data.api.user.dto.CmsUserDTO;
+import cn.rankin.data.api.user.vo.CmsUserVo;
 import org.springframework.cloud.netflix.feign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 

+ 11 - 7
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/user/MerchantService.java

@@ -2,29 +2,33 @@ package cn.rankin.cmsweb.service.user;
 
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.common.utils.dto.user.MerchantDTO;
-import cn.rankin.common.utils.vo.user.MerchantVo;
+import cn.rankin.data.api.user.dto.MerchantDTO;
+import cn.rankin.data.api.user.vo.MerchantVo;
 import org.springframework.cloud.netflix.feign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
 import java.util.Map;
 
 @FeignClient(name = "${service.user.name}")
 public interface MerchantService {
 
-    @RequestMapping(value = "merchant/list", method = RequestMethod.GET)
+    @RequestMapping(value = "/merchant/list", method = RequestMethod.GET)
     APIResult<Page<MerchantVo>> search(@RequestParam Map<String, Object> searchDTO);
 
-    @RequestMapping(value = "merchant", method = RequestMethod.POST)
+    @RequestMapping(value = "/merchant", method = RequestMethod.POST)
     APIResult<MerchantVo> create(@RequestBody MerchantDTO merchantDTO);
 
-    @RequestMapping(value = "merchant", method = RequestMethod.PUT)
+    @RequestMapping(value = "/merchant", method = RequestMethod.PUT)
     APIResult<MerchantVo> update(@RequestBody MerchantDTO merchantDTO);
 
-    @RequestMapping(value = "merchant/{id}", method = RequestMethod.DELETE)
+    @RequestMapping(value = "/merchant/{id}", method = RequestMethod.DELETE)
     APIResult<Boolean> delete(@PathVariable("id") String id);
 
-    @RequestMapping(value = "merchant/{id}", method = RequestMethod.GET)
+    @RequestMapping(value = "/merchant/{id}", method = RequestMethod.GET)
     APIResult<MerchantVo> getMerchant(@PathVariable("id") String id);
 
+    @RequestMapping(value = "/merchant/ids", method = RequestMethod.GET)
+    APIResult<Map<String, MerchantVo>> findByIds(@RequestParam("id") List<String> ids);
+
 }

+ 2 - 2
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/user/TerminalUserService.java

@@ -2,8 +2,8 @@ package cn.rankin.cmsweb.service.user;
 
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.common.utils.dto.user.TerminalUserDTO;
-import cn.rankin.common.utils.vo.user.TerminalUserVo;
+import cn.rankin.data.api.user.dto.TerminalUserDTO;
+import cn.rankin.data.api.user.vo.TerminalUserVo;
 import org.springframework.cloud.netflix.feign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 

+ 0 - 6
rankin-cms-web/src/test/java/cn/rankin/cmsweb/service/product/proxy/WareServiceProxyTest.java

@@ -1,15 +1,9 @@
 package cn.rankin.cmsweb.service.product.proxy;
 
 import cn.rankin.cmsweb.CmsWebApplication;
-import cn.rankin.common.utils.api.model.APIResult;
-import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.common.utils.dto.search.SearchDTO;
-import cn.rankin.common.utils.vo.product.WareVo;
-import com.alibaba.fastjson.JSON;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/api/model/APICode.java

@@ -41,7 +41,7 @@ public class APICode {
     // cms flag code
     public final static int _CMS_WEB_FLAG = 10000;
 
-    // user flag code
+    // vo flag code
     public final static int _USER_SERVICE_FLAG = 20000;
 
     // api flag code

+ 1 - 1
rankin-user-service/src/main/java/cn/rankin/userservice/utils/Constant.java

@@ -1,4 +1,4 @@
-package cn.rankin.userservice.utils;
+package cn.rankin.common.utils.constant;
 
 public class Constant {
 

+ 0 - 29
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/CourseSubItemVo.java

@@ -1,29 +0,0 @@
-package cn.rankin.common.utils.vo.product;
-
-import cn.rankin.common.utils.enums.BaseStatusEnum;
-import cn.rankin.common.utils.enums.CourseSubTypeEnum;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-@Data
-public class CourseSubItemVo implements Serializable{
-
-    private String id;
-
-    private String code;
-
-    private String name;
-
-    private String digest;
-
-    private CourseSubTypeEnum type;
-
-    private BaseStatusEnum status;
-
-    private Date gmtCreated;
-
-    private Date gmtModified;
-
-}

+ 0 - 63
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/ProductVo.java

@@ -1,63 +0,0 @@
-package cn.rankin.common.utils.vo.product;
-
-import cn.rankin.common.utils.enums.ProductTypeEnum;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-
-/*
-{
-    "code": 200,
-    "success": true,
-    "message": null,
-    "data": {
-      'totalNum':300,
-      'page':0,
-      'pageSize':10
-      'recs':[
-        {
-          'id':'xxx',
-          'pid': 'xxx',
-          'name':'xxx',
-          'code':'xxx',
-          'type':'xxx',
-          'gmt_modified':1321232,
-          'merchantId':'xxxx',
-          'goods':[{
-            'id':'xxx',
-            'duration':2322,
-            'chargeUnit':'xxx',
-            'cpPrice':12.01,
-            'merchantPrice':23.92,
-            'terminalPrice':50.1,
-            },
-            ...
-            ],
-        }
-        ...
-      ],
-    }
-}
- */
-@Data
-public class ProductVo implements Serializable {
-
-    private String id;
-
-    private String pid;
-
-    private String name;
-
-    private String code;
-
-    private ProductTypeEnum type;
-
-    private String merchantId;
-
-    private Date gmtCreated;
-
-    private Date gmtModified;
-
-}

+ 19 - 8
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/RecommendVo.java

@@ -1,30 +1,41 @@
-package cn.rankin.common.utils.vo.product;
+package cn.rankin.data.api.product.dto;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.enums.ProductTypeEnum;
 import lombok.Data;
+import lombok.ToString;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
-public class RecommendVo implements Serializable {
+@ToString
+public class GoodsDTO implements Serializable {
 
     private String id;
 
+    private String pid;
+
+    private ProductTypeEnum type;
+
     private String merchantId;
 
-    private String itemId;
+    private Integer duration;
 
-    private BaseStatusEnum status;
+    private String chargeUnit;
+
+    private BigDecimal cpPrice;
+
+    private BigDecimal merchantPrice;
+
+    private BigDecimal terminalPrice;
 
     private Integer sort;
 
+    private BaseStatusEnum status;
+
     private Date gmtCreated;
 
     private Date gmtModified;
-
-    private ProductTypeEnum type;
-
-    private String name;
 }

+ 16 - 9
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/RecommendVo.java

@@ -1,30 +1,37 @@
-package cn.rankin.common.utils.vo.product;
+package cn.rankin.data.api.product.dto;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.enums.ProductTypeEnum;
+import cn.rankin.data.api.product.entity.Goods;
 import lombok.Data;
+import lombok.ToString;
 
-import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 @Data
-public class RecommendVo implements Serializable {
+@ToString
+public class MerchantProductDTO {
 
     private String id;
 
-    private String merchantId;
+    private String pid;
 
-    private String itemId;
+    private String code;
 
-    private BaseStatusEnum status;
+    private String name;
+
+    private ProductTypeEnum type;
 
-    private Integer sort;
+    private String merchantId;
+
+    private BaseStatusEnum status;
 
     private Date gmtCreated;
 
     private Date gmtModified;
 
-    private ProductTypeEnum type;
+    private List<Goods> goods;
 
-    private String name;
+    private List<String> tags;
 }

+ 8 - 11
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/RecommendVo.java

@@ -1,30 +1,27 @@
-package cn.rankin.common.utils.vo.product;
+package cn.rankin.data.api.product.dto;
 
-import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.enums.ProductTypeEnum;
 import lombok.Data;
+import lombok.ToString;
 
 import java.io.Serializable;
 import java.util.Date;
 
 @Data
-public class RecommendVo implements Serializable {
+@ToString
+public class ProductDTO implements Serializable {
 
     private String id;
 
-    private String merchantId;
+    private String pid;
 
-    private String itemId;
+    private String code;
 
-    private BaseStatusEnum status;
+    private String name;
 
-    private Integer sort;
+    private ProductTypeEnum type;
 
     private Date gmtCreated;
 
     private Date gmtModified;
-
-    private ProductTypeEnum type;
-
-    private String name;
 }

+ 5 - 13
rankin-data-api/src/main/java/cn/rankin/data/api/product/entity/Course.java

@@ -1,11 +1,10 @@
 package cn.rankin.data.api.product.entity;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
+import cn.rankin.common.utils.enums.ProductTypeEnum;
 import cn.rankin.data.api.product.vo.CourseSubItemVo;
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.Data;
 import lombok.ToString;
-import org.apache.commons.lang3.StringUtils;
 import org.hibernate.annotations.DynamicInsert;
 import org.hibernate.annotations.DynamicUpdate;
 
@@ -47,6 +46,9 @@ public class Course implements Serializable{
 
     private String bgUrl;
 
+    @Enumerated(EnumType.ORDINAL)
+    private ProductTypeEnum type;
+
     @Column
     @Enumerated(EnumType.ORDINAL)
     private BaseStatusEnum status;
@@ -59,20 +61,10 @@ public class Course implements Serializable{
     @Temporal(TemporalType.TIMESTAMP)
     private Date gmtModified;
 
-    @JsonIgnore
-    public boolean isRight() {
-        if (StringUtils.isEmpty(code)) {
-            return false;
-        }
-        return true;
-    }
-
     @Transient
     private List<CourseSubItemVo> subItemList;
 
-//    @ManyToMany(fetch = FetchType.EAGER)
-//    @JoinTable(name = "lj_course_support_relation", joinColumns = {@JoinColumn(name = "course_id", referencedColumnName = "id")},
-//            inverseJoinColumns = {@JoinColumn(name = "support_id", referencedColumnName = "id")})
     @Transient
     private List<Support> supportList;
+
 }

+ 3 - 0
rankin-data-api/src/main/java/cn/rankin/data/api/product/entity/MerchantProduct.java

@@ -49,4 +49,7 @@ public class MerchantProduct implements Serializable {
 
     @Transient
     private List<Goods> goods;
+
+    @Transient
+    private List<Tag> tags;
 }

+ 4 - 1
rankin-data-api/src/main/java/cn/rankin/data/api/product/entity/ProductTagRelation.java

@@ -17,7 +17,7 @@ import java.util.Date;
 @Entity
 @DynamicUpdate
 @DynamicInsert
-public class ProductTagRelation implements Serializable {
+public class MerchantProductTagRelation implements Serializable {
 
     @Id
     private String id;
@@ -28,6 +28,9 @@ public class ProductTagRelation implements Serializable {
     @Column(name = "tag_id")
     private String tagId;
 
+    @Column(name = "merchant_id")
+    private String merchantId;
+
     @Column
     private Integer sort;
 

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

@@ -1,6 +1,7 @@
 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;
@@ -42,6 +43,9 @@ public class Support implements Serializable {
     @Convert(converter = ListAttributeConverter.class)
     private List<String> imgList;
 
+    @Enumerated(EnumType.ORDINAL)
+    private ProductTypeEnum type;
+
     @Column
     @Enumerated(EnumType.ORDINAL)
     private BaseStatusEnum status;

+ 0 - 12
rankin-data-api/src/main/java/cn/rankin/data/api/product/vo/CourseSubItemVo.java

@@ -2,14 +2,10 @@ package cn.rankin.data.api.product.vo;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.enums.CourseSubTypeEnum;
-import cn.rankin.data.api.product.entity.Lesson;
-import cn.rankin.data.api.product.entity.Courseware;
 import lombok.Data;
-import org.springframework.beans.BeanUtils;
 
 import java.io.Serializable;
 import java.util.Date;
-import java.util.List;
 
 @Data
 public class CourseSubItemVo implements Serializable{
@@ -26,16 +22,8 @@ public class CourseSubItemVo implements Serializable{
 
     private BaseStatusEnum status;
 
-    private List<Courseware> coursewareList;
-
     private Date gmtCreated;
 
     private Date gmtModified;
 
-    public static CourseSubItemVo parseToVo(Lesson lesson) {
-        CourseSubItemVo vo = new CourseSubItemVo();
-        BeanUtils.copyProperties(lesson, vo);
-        vo.setType(CourseSubTypeEnum.LESSON);
-        return vo;
-    }
 }

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/CourseVo.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.vo.product;
+package cn.rankin.data.api.product.vo;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import lombok.Data;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/GroupVo.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.vo.product;
+package cn.rankin.data.api.product.vo;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import lombok.Data;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/LessonVo.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.vo.product;
+package cn.rankin.data.api.product.vo;
 
 import lombok.Data;
 

+ 43 - 0
rankin-data-api/src/main/java/cn/rankin/data/api/product/vo/MerchantProductVo.java

@@ -0,0 +1,43 @@
+package cn.rankin.data.api.product.vo;
+
+import cn.rankin.common.utils.enums.BaseStatusEnum;
+import cn.rankin.common.utils.enums.ProductTypeEnum;
+import cn.rankin.data.api.product.entity.Goods;
+import cn.rankin.data.api.product.entity.Tag;
+import lombok.Data;
+import lombok.ToString;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@ToString
+public class MerchantProductVo implements Serializable {
+
+    private String id;
+
+    private String pid;
+
+    private String code;
+
+    private String name;
+
+    private ProductTypeEnum type;
+
+    private String merchantId;
+
+    private String merchantName;
+
+    private BaseStatusEnum status;
+
+    private Date gmtCreated;
+
+    private Date gmtModified;
+
+    private List<Goods> goods;
+
+    private List<Tag> tags;
+}

+ 3 - 0
rankin-data-api/src/main/java/cn/rankin/data/api/product/vo/ProductVo.java

@@ -1,5 +1,6 @@
 package cn.rankin.data.api.product.vo;
 
+import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.enums.ProductTypeEnum;
 import cn.rankin.data.api.product.entity.Goods;
 import lombok.Data;
@@ -21,6 +22,8 @@ public class ProductVo implements Serializable {
 
     private ProductTypeEnum type;
 
+    private BaseStatusEnum status;
+
     private Date gmtCreated;
 
     private Date gmtModified;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/RecommendVo.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.vo.product;
+package cn.rankin.data.api.product.vo;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.enums.ProductTypeEnum;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/SupportVo.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.vo.product;
+package cn.rankin.data.api.product.vo;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import lombok.Data;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/TagVo.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.vo.product;
+package cn.rankin.data.api.product.vo;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.enums.TagTypeEnum;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/product/WareVo.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.vo.product;
+package cn.rankin.data.api.product.vo;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.enums.WareTypeEnum;

+ 25 - 0
rankin-data-api/src/main/java/cn/rankin/data/api/resource/OSSSignatureVo.java

@@ -0,0 +1,25 @@
+package cn.rankin.data.api.resource;
+
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+@Data
+@ToString
+public class OSSSignatureVo implements Serializable {
+
+    private String accessid;
+
+    private String policy;
+
+    private String signature;
+
+    private String expire;
+
+    private String dir;
+
+    private String path;
+
+    private String host;
+}

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/CampusDTO.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.dto.user;
+package cn.rankin.data.api.user.dto;
 
 import lombok.Data;
 import lombok.ToString;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/CampusSearchDTO.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.dto.user;
+package cn.rankin.data.api.user.dto;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import lombok.Data;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/CmsUserDTO.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.dto.user;
+package cn.rankin.data.api.user.dto;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.enums.GenderEnum;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/CmsUserSearchDTO.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.dto.user;
+package cn.rankin.data.api.user.dto;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import lombok.Data;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/MerchantDTO.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.dto.user;
+package cn.rankin.data.api.user.dto;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.enums.ReceiptTypeEnum;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/MerchantSearchDTO.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.dto.user;
+package cn.rankin.data.api.user.dto;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import lombok.Data;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/TerminalUserDTO.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.dto.user;
+package cn.rankin.data.api.user.dto;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import lombok.Data;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/dto/user/TerminalUserSearchDTO.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.dto.user;
+package cn.rankin.data.api.user.dto;
 
 import lombok.Data;
 

+ 1 - 2
rankin-user-service/src/main/java/cn/rankin/userservice/entity/Campus.java

@@ -1,7 +1,6 @@
-package cn.rankin.userservice.entity;
+package cn.rankin.data.api.user.entity;
 
 import cn.rankin.common.utils.util.ProvinceUtil;
-import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.ToString;
 import org.hibernate.annotations.DynamicInsert;

+ 1 - 4
rankin-user-service/src/main/java/cn/rankin/userservice/entity/CmsUser.java

@@ -1,4 +1,4 @@
-package cn.rankin.userservice.entity;
+package cn.rankin.data.api.user.entity;
 
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
@@ -7,13 +7,11 @@ import lombok.Data;
 import lombok.ToString;
 import org.hibernate.annotations.DynamicInsert;
 import org.hibernate.annotations.DynamicUpdate;
-import org.hibernate.validator.constraints.Email;
 
 import javax.persistence.*;
 import javax.validation.constraints.Pattern;
 import java.io.Serializable;
 import java.util.Date;
-import java.util.List;
 
 @Data
 @ToString
@@ -46,7 +44,6 @@ public class CmsUser implements Serializable {
     @Pattern(regexp = "^[1][3,4,5,7,8,9][0-9]{9}$")
     private String mobile;
 
-    @Email
     private String mail;
 
     private String weChat;

+ 2 - 2
rankin-user-service/src/main/java/cn/rankin/userservice/entity/Merchant.java

@@ -1,9 +1,9 @@
-package cn.rankin.userservice.entity;
+package cn.rankin.data.api.user.entity;
 
+import cn.rankin.common.utils.constant.Constant;
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.enums.ReceiptTypeEnum;
 import cn.rankin.common.utils.validator.Domain;
-import cn.rankin.userservice.utils.Constant;
 import lombok.Data;
 import lombok.ToString;
 import org.hibernate.annotations.DynamicInsert;

+ 1 - 1
rankin-user-service/src/main/java/cn/rankin/userservice/entity/OperationLog.java

@@ -1,4 +1,4 @@
-package cn.rankin.userservice.entity;
+package cn.rankin.data.api.user.entity;
 
 import lombok.Data;
 import lombok.ToString;

+ 2 - 2
rankin-user-service/src/main/java/cn/rankin/userservice/entity/Resource.java

@@ -1,4 +1,4 @@
-package cn.rankin.userservice.entity;
+package cn.rankin.data.api.user.entity;
 
 import lombok.Data;
 import lombok.ToString;
@@ -37,7 +37,7 @@ public class Resource implements Serializable {
 	 */
 	private String name;
 	/**
-	 * 授权Code (多个用逗号分隔,如:user:list,user:create)
+	 * 授权Code (多个用逗号分隔,如:vo:list,vo:create)
 	 * sys:config:list,sys:config:info,sys:config:save,sys:config:update,sys:config:delete
 	 * 此处做的灵活一点 现在权限控制不用每个按钮都设置 只需要控制到菜单权限 然后菜单的 code 一次设置全部权限 增删改查code
 	 * 给出两个角色 一个是管理权限 一个查看权限 然后授权给 初始化的 role

+ 1 - 2
rankin-user-service/src/main/java/cn/rankin/userservice/entity/Role.java

@@ -1,4 +1,4 @@
-package cn.rankin.userservice.entity;
+package cn.rankin.data.api.user.entity;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import lombok.Data;
@@ -8,7 +8,6 @@ import org.hibernate.annotations.DynamicUpdate;
 
 import javax.persistence.*;
 import java.io.Serializable;
-import java.sql.Timestamp;
 import java.util.Date;
 import java.util.List;
 

+ 1 - 1
rankin-user-service/src/main/java/cn/rankin/userservice/entity/TerminalDevice.java

@@ -1,4 +1,4 @@
-package cn.rankin.userservice.entity;
+package cn.rankin.data.api.user.entity;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import lombok.Data;

+ 1 - 1
rankin-user-service/src/main/java/cn/rankin/userservice/entity/TerminalUser.java

@@ -1,4 +1,4 @@
-package cn.rankin.userservice.entity;
+package cn.rankin.data.api.user.entity;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import com.fasterxml.jackson.annotation.JsonIgnore;

+ 1 - 1
rankin-user-service/src/main/java/cn/rankin/userservice/entity/UserRole.java

@@ -1,4 +1,4 @@
-package cn.rankin.userservice.entity;
+package cn.rankin.data.api.user.entity;
 
 import lombok.Data;
 import lombok.ToString;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/user/CampusVo.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.vo.user;
+package cn.rankin.data.api.user.vo;
 
 import lombok.Data;
 import lombok.ToString;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/user/CmsUserVo.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.vo.user;
+package cn.rankin.data.api.user.vo;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.enums.GenderEnum;

+ 2 - 2
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/user/MerchantVo.java

@@ -1,8 +1,8 @@
-package cn.rankin.common.utils.vo.user;
+package cn.rankin.data.api.user.vo;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.enums.ReceiptTypeEnum;
-import cn.rankin.common.utils.vo.product.RecommendVo;
+import cn.rankin.data.api.product.vo.RecommendVo;
 import lombok.Data;
 import lombok.ToString;
 

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/user/TerminalDeviceVo.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.vo.user;
+package cn.rankin.data.api.user.vo;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import lombok.Data;

+ 1 - 1
rankin-common-utils/src/main/java/cn/rankin/common/utils/vo/user/TerminalUserVo.java

@@ -1,4 +1,4 @@
-package cn.rankin.common.utils.vo.user;
+package cn.rankin.data.api.user.vo;
 
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import lombok.Data;

+ 0 - 182
rankin-product-service/src/main/java/cn/rankin/productservice/controller/CourseController.java

@@ -1,182 +0,0 @@
-package cn.rankin.productservice.controller;
-
-import cn.rankin.common.utils.api.model.BaseCode;
-import cn.rankin.common.utils.api.model.APIResult;
-import cn.rankin.data.api.product.dto.CourseDTO;
-import cn.rankin.data.api.product.dto.CourseSubRelationDTO;
-import cn.rankin.common.utils.dto.search.SearchDTO;
-import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.common.utils.enums.BaseOrderEnum;
-import cn.rankin.data.api.product.entity.Course;
-import cn.rankin.data.api.product.entity.Support;
-import cn.rankin.productservice.code.ProductServiceAPICode;
-import cn.rankin.productservice.proxy.CourseServiceProxy;
-import cn.rankin.productservice.service.*;
-import cn.rankin.data.api.product.vo.CourseSubItemVo;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.LinkedHashMap;
-import java.util.List;
-
-
-@Slf4j
-@RestController
-@RequestMapping(value = "course")
-public class CourseController {
-
-    @Autowired
-    private CourseService courseService;
-
-    @Autowired
-    private CourseServiceProxy courseServiceProxy;
-
-    @RequestMapping(value = "/list", method = RequestMethod.GET)
-    public APIResult<Page<Course>> search(SearchDTO searchDTO) {
-        Course course = new Course();
-
-        String code = searchDTO.getCode();
-        if (!StringUtils.isEmpty(code)) {
-            course.setCode("%" + code + "%");
-        }
-
-        String name = searchDTO.getName();
-        if (!StringUtils.isEmpty(name)) {
-            course.setName("%" + name + "%");
-        }
-
-        course.setStatus(searchDTO.getStatus());
-
-        LinkedHashMap<String, BaseOrderEnum> sort = new LinkedHashMap<>();
-        sort.put("gmtModified", BaseOrderEnum.DESC);
-
-        return courseService.search(course, searchDTO.getPageNo(), searchDTO.getPageSize(), sort);
-    }
-
-    // 创建资源
-    @Transactional
-    @RequestMapping(method = RequestMethod.POST)
-    public APIResult<Course> create(@RequestBody CourseDTO courseDTO) {
-        String code = courseDTO.getCode();
-        if (StringUtils.isEmpty(code)) {
-            return APIResult.error(ProductServiceAPICode.PARAMETER_ERROR);
-        }
-
-        if (courseService.exists(code)) {
-            return APIResult.error(ProductServiceAPICode.ALREADY_EXISTS);
-        }
-
-        APIResult<Course> result = courseService.create(courseDTO);
-        if (!result.getSuccess()) {
-            return result;
-        }
-
-        Course course = result.getData();
-        String courseId = result.getData().getId();
-
-        // 更新二级关系
-        List<CourseSubRelationDTO> subRelationList = courseDTO.getSubItemList();
-        if (subRelationList != null) {
-            APIResult<List<CourseSubItemVo>> subResult = courseServiceProxy.updateSubRelation(courseId, subRelationList);
-            if (!subResult.getSuccess()) {
-                // 显示回滚
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return APIResult.error(new BaseCode(subResult.getCode(), subResult.getMessage()));
-            }
-            course.setSubItemList(subResult.getData());
-        }
-
-        // 更新周边关系
-        List<String> supportIdList = courseDTO.getSupportList();
-        if (supportIdList != null) {
-            APIResult<List<Support>> supportResult = courseServiceProxy.updateSupportRelation(courseId, supportIdList);
-            if (!supportResult.getSuccess()) {
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return APIResult.error(new BaseCode(supportResult.getCode(), supportResult.getMessage()));
-            }
-            course.setSupportList(supportResult.getData());
-        }
-
-        return result;
-    }
-
-    // 修改资源
-    @Transactional
-    @RequestMapping(method = RequestMethod.PUT)
-    public APIResult<Course> update(@RequestBody CourseDTO courseDTO) {
-        if (courseDTO.getId() == null) {
-            return APIResult.error(ProductServiceAPICode.PARAMETER_ERROR);
-        }
-
-        APIResult<Course> result = courseService.update(courseDTO);
-        if (!result.getSuccess()) {
-            return result;
-        }
-
-        Course course = result.getData();
-        String courseId = result.getData().getId();
-
-
-        // 更新二级关系
-        List<CourseSubRelationDTO> subRelationList = courseDTO.getSubItemList();
-        if (subRelationList != null) {
-            APIResult<List<CourseSubItemVo>> subResult = courseServiceProxy.updateSubRelation(courseId, subRelationList);
-            if (!subResult.getSuccess()) {
-                // 显示回滚
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return APIResult.error(new BaseCode(subResult.getCode(), subResult.getMessage()));
-            }
-            course.setSubItemList(subResult.getData());
-        }
-
-        // 更新周边关系
-        List<String> supportIdList = courseDTO.getSupportList();
-        if (supportIdList != null) {
-            APIResult<List<Support>> supportResult = courseServiceProxy.updateSupportRelation(courseId, supportIdList);
-            if (!supportResult.getSuccess()) {
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return APIResult.error(new BaseCode(supportResult.getCode(), supportResult.getMessage()));
-            }
-            course.setSupportList(supportResult.getData());
-        }
-
-        return result;
-    }
-
-    // 删除
-    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
-    public APIResult delete(@PathVariable("id") String id) {
-        if (StringUtils.isEmpty(id)) {
-            return APIResult.error(ProductServiceAPICode.PARAMETER_ERROR);
-        }
-
-        /*
-        APIResult<List<Item>> itemResult = itemService.findAllBySubId(id);
-        if (itemResult.getData() == null || itemResult.getData().size() == 0) {
-            return courseService.delete(id);
-        }
-
-        APIResult<List<Item>> result = APIResult.error(APICode.CAN_NOT_DEL);
-        result.setData(itemResult.getData());
-
-        return result;
-
-*/
-        return null;
-    }
-
-    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
-    public APIResult<Course> getCourse(@PathVariable("id") String id) {
-        if (StringUtils.isEmpty(id)) {
-            return APIResult.error(ProductServiceAPICode.PARAMETER_ERROR);
-        }
-
-        Course result = courseServiceProxy.getCourse(id);
-
-        return APIResult.ok(result);
-    }
-}

+ 36 - 0
rankin-product-service/src/main/java/cn/rankin/productservice/controller/GoodsController.java

@@ -0,0 +1,36 @@
+package cn.rankin.productservice.controller;
+
+import cn.rankin.common.utils.api.model.APIResult;
+import cn.rankin.data.api.product.dto.GoodsDTO;
+import cn.rankin.data.api.product.entity.Goods;
+import cn.rankin.productservice.service.GoodsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping(value = "/goods")
+public class GoodsController {
+
+    @Autowired
+    private GoodsService goodsService;
+
+    @RequestMapping(value = "/{goodsId}", method = RequestMethod.GET)
+    public APIResult<Goods> getGoods(@PathVariable("goodsId") String goodsId) {
+        return goodsService.getGoods(goodsId);
+    }
+
+    @RequestMapping(method = RequestMethod.POST)
+    public APIResult<Goods> create(@RequestBody GoodsDTO goodsDTO) {
+        return goodsService.create(goodsDTO);
+    }
+
+    @RequestMapping(method = RequestMethod.PUT)
+    public APIResult<Goods> update(@RequestBody GoodsDTO goodsDTO) {
+        return goodsService.update(goodsDTO);
+    }
+
+    @RequestMapping(value = "/{goodsId}", method = RequestMethod.DELETE)
+    public APIResult<Boolean> delete(@PathVariable("goodsId") String goodsId) {
+        return goodsService.delete(goodsId);
+    }
+}

+ 1 - 1
rankin-product-service/src/main/java/cn/rankin/productservice/controller/LessonController.java

@@ -177,7 +177,7 @@ public class LessonController {
             }
         });
 
-        APIResult<List<Course>> courseResult = courseService.findAllByIds(courseIdList);
+        APIResult<List<Course>> courseResult = courseService.findByIds(courseIdList);
         APIResult<List<Course>> result = APIResult.error(APICode.CAN_NOT_DEL);
         result.setData(courseResult.getData());
 

+ 37 - 6
rankin-product-service/src/main/java/cn/rankin/productservice/controller/MerchantProductController.java

@@ -2,22 +2,26 @@ package cn.rankin.productservice.controller;
 
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
+import cn.rankin.common.utils.enums.BaseStatusEnum;
+import cn.rankin.data.api.product.dto.MerchantProductDTO;
 import cn.rankin.data.api.product.dto.MerchantProductSearchDTO;
 import cn.rankin.common.utils.enums.BaseOrderEnum;
 import cn.rankin.data.api.product.entity.MerchantProduct;
-import cn.rankin.productservice.proxy.MerchantProductServiceProxy;
+import cn.rankin.productservice.code.ProductServiceAPICode;
+import cn.rankin.productservice.service.MerchantProductService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.LinkedHashMap;
+import java.util.List;
 
 @RestController
 @RequestMapping(value = "/merchant/products")
 public class MerchantProductController {
 
     @Autowired
-    private MerchantProductServiceProxy merchantProductServiceProxy;
+    private MerchantProductService merchantProductService;
 
     @RequestMapping(method = RequestMethod.GET)
     public APIResult<Page<MerchantProduct>> search(MerchantProductSearchDTO searchDTO) {
@@ -41,12 +45,39 @@ public class MerchantProductController {
         LinkedHashMap<String, BaseOrderEnum> sort = new LinkedHashMap<>();
         sort.put("gmtModified", BaseOrderEnum.DESC);
 
-        return merchantProductServiceProxy.search(merchantProduct, searchDTO.getPageNo(), searchDTO.getPageSize(), sort);
+        return merchantProductService.search(merchantProduct, searchDTO.getPageNo(), searchDTO.getPageSize(), sort);
     }
 
-    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
-    public APIResult<MerchantProduct> getProduct(@PathVariable("id") String productId) {
-        return merchantProductServiceProxy.getProduct(productId);
+    @RequestMapping(value = "/detail", method = RequestMethod.GET)
+    public APIResult<MerchantProduct> getProduct(@RequestParam("productId") String productId, @RequestParam("merchantId") String merchantId) {
+        return merchantProductService.getProduct(productId, merchantId);
     }
 
+    @RequestMapping(value = "/status", method = RequestMethod.PUT)
+    public APIResult<Boolean> change(@RequestBody MerchantProductDTO merchantProductDTO) {
+        String productId = merchantProductDTO.getPid();
+        String merchantId = merchantProductDTO.getMerchantId();
+        BaseStatusEnum status = merchantProductDTO.getStatus();
+        if (StringUtils.isEmpty(productId) || StringUtils.isEmpty(merchantId) || status == null) {
+            return APIResult.error(ProductServiceAPICode.PARAMETER_ERROR);
+        }
+        return merchantProductService.change(productId, merchantId, status);
+    }
+
+    @RequestMapping(value = "/tags", method = RequestMethod.PUT)
+    public APIResult<MerchantProduct> mountTags(@RequestBody MerchantProductDTO productDTO) {
+        String productId = productDTO.getPid();
+        if (StringUtils.isEmpty(productId)) {
+            return APIResult.error(ProductServiceAPICode.PARAMETER_ERROR);
+        }
+
+        String merchantId = productDTO.getMerchantId();
+        if (StringUtils.isEmpty(merchantId)) {
+            return APIResult.error(ProductServiceAPICode.PARAMETER_ERROR);
+        }
+
+        List<String> tagIdList = productDTO.getTags();
+
+        return merchantProductService.mountTags(productId, merchantId, tagIdList);
+    }
 }

+ 1 - 0
rankin-product-service/src/main/java/cn/rankin/productservice/controller/PackageController.java

@@ -2,6 +2,7 @@ package cn.rankin.productservice.controller;
 
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
+import cn.rankin.data.api.product.entity.Package;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;

+ 35 - 6
rankin-product-service/src/main/java/cn/rankin/productservice/controller/ProductController.java

@@ -3,15 +3,19 @@ package cn.rankin.productservice.controller;
 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.common.utils.enums.ProductTypeEnum;
+import cn.rankin.data.api.product.dto.CourseDTO;
 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.entity.Product;
+import cn.rankin.data.api.product.entity.Support;
+import cn.rankin.productservice.code.ProductServiceAPICode;
 import cn.rankin.productservice.service.ProductService;
+import com.alibaba.fastjson.JSON;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.LinkedHashMap;
 
@@ -46,7 +50,32 @@ public class ProductController {
     }
 
     @RequestMapping(value = "/{productId}", method = RequestMethod.GET)
-    public APIResult<Object> getProduct(@PathVariable String productId) {
-        return null;
+    public APIResult getProduct(@PathVariable("productId") String productId) {
+        return productService.get(productId);
+    }
+
+    @RequestMapping(value = "/course", method = RequestMethod.PUT)
+    public APIResult updateCourse(@RequestBody CourseDTO courseDTO) {
+        return productService.update(courseDTO);
+    }
+
+    @RequestMapping(value = "/support", method = RequestMethod.PUT)
+    public APIResult<Support> updateSupport(@RequestBody SupportDTO supportDTO) {
+        return productService.update(supportDTO);
+    }
+
+    @RequestMapping(value = "/course", method = RequestMethod.POST)
+    public APIResult<Course> createCourse(@RequestBody CourseDTO courseDTO) {
+        return productService.create(courseDTO);
+    }
+
+    @RequestMapping(value = "/support", method = RequestMethod.POST)
+    public APIResult<Support> createSupport(@RequestBody SupportDTO supportDTO) {
+        return productService.create(supportDTO);
+    }
+
+    @RequestMapping(value = "/{productId}", method = RequestMethod.DELETE)
+    public APIResult delete(@PathVariable("productId") String productId) {
+        return productService.delete(productId);
     }
 }

+ 0 - 137
rankin-product-service/src/main/java/cn/rankin/productservice/controller/SupportController.java

@@ -1,137 +0,0 @@
-package cn.rankin.productservice.controller;
-
-import cn.rankin.common.utils.api.model.BaseCode;
-import cn.rankin.common.utils.api.model.APICode;
-import cn.rankin.common.utils.api.model.APIResult;
-import cn.rankin.common.utils.api.page.Page;
-import cn.rankin.common.utils.dto.search.SearchDTO;
-import cn.rankin.data.api.product.dto.SupportDTO;
-import cn.rankin.common.utils.enums.BaseOrderEnum;
-import cn.rankin.data.api.product.entity.Support;
-import cn.rankin.productservice.proxy.SupportServiceProxy;
-import cn.rankin.productservice.service.SupportReferenceService;
-import cn.rankin.productservice.service.SupportService;
-import org.apache.commons.lang.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.LinkedHashMap;
-import java.util.List;
-
-@RestController
-@RequestMapping(value = "support")
-public class SupportController {
-
-    @Autowired
-    private SupportService supportService;
-
-    @Autowired
-    private SupportReferenceService selfRelationService;
-
-    @Autowired
-    private SupportServiceProxy supportServiceProxy;
-
-    @RequestMapping(value = "/list", method = RequestMethod.GET)
-    public APIResult<Page<Support>> search(SearchDTO searchDTO) {
-        Support support = new Support();
-
-        String code = searchDTO.getCode();
-        if (!StringUtils.isEmpty(code)) {
-            support.setCode("%" + code + "%");
-        }
-
-        String name = searchDTO.getName();
-        if (!StringUtils.isEmpty(name)) {
-            support.setName("%" + name + "%");
-        }
-
-        support.setStatus(searchDTO.getStatus());
-        LinkedHashMap<String, BaseOrderEnum> sort = new LinkedHashMap<>();
-        sort.put("gmtModified", BaseOrderEnum.DESC);
-
-        return supportService.search(support, searchDTO.getPageNo(), searchDTO.getPageSize(), sort);
-    }
-
-    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
-    public APIResult<Support> getSupport(@PathVariable("id") String id) {
-        if (StringUtils.isEmpty(id)) {
-            return APIResult.error(APICode.PARAMETER_ERROR);
-        }
-
-        APIResult<Support> result = supportService.findById(id);
-        if (!result.getSuccess()) {
-            return result;
-        }
-
-        Support support = result.getData();
-
-        APIResult<List<Support>> supportResult = supportServiceProxy.getRelationSupport(support.getId());
-        support.setSupportList(supportResult.getData());
-
-        return result;
-
-    }
-
-    @Transactional
-    @RequestMapping(method = RequestMethod.POST)
-    public APIResult<Support> create(@RequestBody SupportDTO supportDTO) {
-        String code = supportDTO.getCode();
-        if (StringUtils.isEmpty(code)) {
-            return APIResult.error(APICode.PARAMETER_ERROR);
-        }
-
-        APIResult<Support> result = supportService.create(supportDTO);
-        Support support = result.getData();
-        List<String> supportIdList = supportDTO.getSupportList();
-        if (supportIdList == null || supportIdList.size() == 0 || support == null) {
-            return result;
-        }
-
-        APIResult<List<Support>> supportResult = supportServiceProxy.updateSelfRelation(support.getId(), supportIdList);
-        if (!supportResult.getSuccess()) {
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return APIResult.error(new BaseCode(supportResult.getCode(), supportResult.getMessage()));
-        }
-        support.setSupportList(supportResult.getData());
-
-        return result;
-
-    }
-
-    @RequestMapping(method = RequestMethod.PUT)
-    public APIResult<Support> update(@RequestBody SupportDTO supportDTO) {
-        if (supportDTO.getId() == null) {
-            return APIResult.error(APICode.PARAMETER_ERROR);
-        }
-
-        APIResult<Support> result = supportService.update(supportDTO);
-        Support support = result.getData();
-
-        List<String> supportIdList = supportDTO.getSupportList();
-        if (supportIdList == null || support == null) {
-            return result;
-        }else if (supportIdList.size() == 0) {
-            selfRelationService.deleteBySupportId(support.getId());
-            return result;
-        }
-
-        APIResult<List<Support>> supportResult = supportServiceProxy.updateSelfRelation(support.getId(), supportIdList);
-        if (!supportResult.getSuccess()) {
-            return APIResult.error(new BaseCode(supportResult.getCode(), supportResult.getMessage()));
-        }
-        support.setSupportList(supportResult.getData());
-
-        return result;
-    }
-
-    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
-    public APIResult<Boolean> delete(@PathVariable("id") String id) {
-        if (StringUtils.isEmpty(id)) {
-            return APIResult.error(APICode.PARAMETER_ERROR);
-        }
-
-        return supportService.delete(id);
-    }
-}

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

@@ -1,6 +1,6 @@
 package cn.rankin.productservice.controller;
 
-import cn.rankin.productservice.service.ProductTagRelationService;
+import cn.rankin.productservice.service.MerchantProductTagRelationService;
 import cn.rankin.productservice.service.TagService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,7 +15,7 @@ public class TagController {
     private TagService tagService;
 
     @Autowired
-    private ProductTagRelationService tagRelationService;
+    private MerchantProductTagRelationService tagRelationService;
 /*
     @Autowired
     private ItemService itemService;

+ 1 - 1
rankin-product-service/src/main/java/cn/rankin/productservice/controller/WareController.java

@@ -93,7 +93,7 @@ public class WareController {
             }
         );
 
-        List<Lesson> lessonList = lessonService.findAllByIds(lessonIds).getData();
+        List<Lesson> lessonList = lessonService.findByIds(lessonIds).getData();
         APIResult<List<Lesson>> result = APIResult.error(APICode.CAN_NOT_DEL);
         result.setData(lessonList);
 

+ 0 - 150
rankin-product-service/src/main/java/cn/rankin/productservice/proxy/CourseServiceProxy.java

@@ -1,150 +0,0 @@
-package cn.rankin.productservice.proxy;
-
-import cn.rankin.common.utils.api.model.APICode;
-import cn.rankin.common.utils.api.model.APIResult;
-import cn.rankin.data.api.product.dto.CourseSubRelationDTO;
-import cn.rankin.common.utils.enums.CourseSubTypeEnum;
-import cn.rankin.data.api.product.entity.*;
-import cn.rankin.productservice.service.*;
-import cn.rankin.data.api.product.vo.CourseSubItemVo;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static cn.rankin.productservice.utils.DTOConverter.convert;
-
-@Service
-public class CourseServiceProxy {
-
-    @Autowired
-    private CourseService courseService;
-
-    @Autowired
-    private CourseSubRelationService courseSubRelationService;
-
-    @Autowired
-    private LessonService lessonService;
-
-    @Autowired
-    private CourseSupportRelationService courseSupportRelationService;
-
-    @Autowired
-    private SupportService supportService;
-
-    public Course getCourse(String id) {
-        APIResult<Course> result = courseService.findById(id);
-        Course course = result.getData();
-        if (!result.getSuccess() || course == null) {
-            return course;
-        }
-
-        // subItem set
-        List<CourseSubItemVo> subItemVoList = findSubItemVo(id);
-        course.setSubItemList(subItemVoList);
-
-        // support set
-        List<Support> supportList = findSupportList(id);
-        course.setSupportList(supportList);
-        return course;
-    }
-
-    // find sub item by courseId
-    public List<CourseSubItemVo> findSubItemVo(String courseId) {
-        List<CourseSubItemVo> subItemVoList = new ArrayList<>();
-
-        List<CourseSubRelation> courseSubRelationList = courseSubRelationService.findByCourseId(courseId);
-        if (courseSubRelationList == null || courseSubRelationList.size() == 0) {
-            return subItemVoList;
-        }
-
-        List<String> lessonIdList = new ArrayList<>();
-        courseSubRelationList.forEach( relation -> {
-            if (CourseSubTypeEnum.LESSON.equals(relation.getType())) {
-                lessonIdList.add(relation.getSubId());
-            }
-        });
-
-        APIResult<List<Lesson>> lessonResult = lessonService.findByIds(lessonIdList);
-        List<Lesson> lessonList = lessonResult.getData();
-        if (lessonList != null && lessonList.size() > 0) {
-            lessonList.forEach(lesson -> subItemVoList.add(convert(lesson)));
-        }
-
-        return subItemVoList;
-    }
-
-    // find support by courseId
-    public List<Support> findSupportList(String courseId) {
-
-        List<CourseSupportRelation> supportRelationList = courseSupportRelationService.findByCourseId(courseId);
-        if (supportRelationList == null || supportRelationList.size() == 0) {
-            return new ArrayList<>();
-        }
-
-        List<String> supportIdList = new ArrayList<>();
-        supportRelationList.forEach( relation -> supportIdList.add(relation.getSupportId()));
-        APIResult<List<Support>> supportResult = supportService.findByIds(supportIdList);
-
-        return supportResult.getData();
-    }
-
-    // 更新二级关系
-    @Transactional
-    public APIResult<List<CourseSubItemVo>> updateSubRelation(String courseId, List<CourseSubRelationDTO> subRelationDTOList) {
-        // TODO: 暂时不考虑单元
-        if (subRelationDTOList == null) {
-            return APIResult.ok();
-        }else if (subRelationDTOList.size() == 0) {
-            courseSubRelationService.deleteByCourseId(courseId);
-            return APIResult.ok(new ArrayList<>());
-        }
-
-        List<String> lessonIdList = new ArrayList<>();
-        subRelationDTOList.forEach( relation -> {
-            if (CourseSubTypeEnum.LESSON.equals(relation.getType())) {
-                lessonIdList.add(relation.getId());
-            }
-        });
-
-        // 查课
-        APIResult<List<Lesson>> lessonResult = lessonService.findByIds(lessonIdList);
-        List<Lesson> lessonList = lessonResult.getData();
-        if (lessonList == null || lessonList.size() != lessonIdList.size()) {
-            return APIResult.error(APICode.error("存在错误的课"));
-        }
-
-        courseSubRelationService.update(courseId, subRelationDTOList);
-
-        List<CourseSubItemVo> subItemVoList = new ArrayList<>();
-        lessonResult.getData().forEach( lesson -> {
-            subItemVoList.add(convert(lesson));
-        });
-
-        return APIResult.ok(subItemVoList);
-    }
-
-    // 更新周边关系
-    @Transactional
-    public APIResult<List<Support>> updateSupportRelation(String courseId, List<String> supportIdList) {
-        if (supportIdList == null) {
-            return APIResult.ok();
-        }
-
-        List<Support> supportList = new ArrayList<>();
-        if (supportIdList.size() == 0) {
-            courseSupportRelationService.deleteByCourseId(courseId);
-        }else {
-            APIResult<List<Support>> supportResult = supportService.findByIds(supportIdList);
-            supportList = supportResult.getData();
-            if (supportList == null || supportList.size() != supportIdList.size()) {
-                return APIResult.error(APICode.error("存在错误的周边"));
-            }
-            courseSupportRelationService.update(courseId, supportIdList);
-        }
-
-        return APIResult.ok(supportList);
-    }
-}

+ 0 - 93
rankin-product-service/src/main/java/cn/rankin/productservice/proxy/MerchantProductServiceProxy.java

@@ -1,93 +0,0 @@
-package cn.rankin.productservice.proxy;
-
-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.common.utils.util.JpaSortUtil;
-import cn.rankin.productservice.code.ProductServiceAPICode;
-import cn.rankin.data.api.product.entity.Goods;
-import cn.rankin.data.api.product.entity.MerchantProduct;
-import cn.rankin.productservice.repository.GoodsRepository;
-import cn.rankin.productservice.repository.MerchantProductRepository;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
-import java.util.*;
-
-@Service
-public class MerchantProductServiceProxy {
-
-    @Autowired
-    private MerchantProductRepository merchantProductRepository;
-
-    @Autowired
-    private GoodsRepository goodsRepository;
-
-    public APIResult<Page<MerchantProduct>> search(MerchantProduct merchantProduct, Integer pageNo, Integer pageSize, LinkedHashMap<String, BaseOrderEnum> sort) {
-        Long count = merchantProductRepository.count(merchantProduct);
-        Page<MerchantProduct> page = new Page<>(count, pageNo, pageSize);
-
-        if (count == 0) {
-            return APIResult.ok(page);
-        }
-
-        List<MerchantProduct> merchantProductList = merchantProductRepository.find(merchantProduct, page.getStart(), pageSize, JpaSortUtil.sort(sort));
-        if (merchantProductList.size() == 0) {
-            page.setList(new ArrayList<>());
-            return APIResult.ok(page);
-        }
-
-        List<String> productIdList = new ArrayList<>();
-        merchantProductList.forEach(e -> productIdList.add(e.getPid()));
-        List<Goods> goodsList = goodsRepository.findByPidIn(productIdList);
-
-        Map<String, List<Goods>> goodsMap = new HashMap<>();
-        goodsList.forEach(good -> {
-            String productId = good.getPid();
-            if (goodsMap.containsKey(productId)) {
-                goodsMap.get(productId).add(good);
-            }else {
-                List<Goods> tmpList = new ArrayList<>();
-                tmpList.add(good);
-                goodsMap.put(productId, tmpList);
-            }
-        });
-
-        // 按sort排序
-        for (String productId: goodsMap.keySet()) {
-            List<Goods> goods = goodsMap.get(productId);
-            Collections.sort(goods, new Comparator<Goods>() {
-                @Override
-                public int compare(Goods o1, Goods o2) {
-                    return o1.getSort().compareTo(o2.getSort());
-                }
-            });
-        }
-
-        for (MerchantProduct product : merchantProductList) {
-            String productId = product.getPid();
-            List<Goods> goods = goodsMap.get(productId);
-            if (!CollectionUtils.isEmpty(goods)) {
-                product.setGoods(goods);
-            }
-        }
-
-        page.setList(merchantProductList);
-
-        return APIResult.ok(page);
-    }
-
-    public APIResult<MerchantProduct> getProduct(String productId) {
-        MerchantProduct merchantProduct = merchantProductRepository.findByPid(productId);
-
-        if (merchantProduct == null) {
-            return APIResult.error(ProductServiceAPICode.NOT_EXISTS);
-        }
-
-        List<Goods> goodsList = goodsRepository.findByPid(productId);
-        merchantProduct.setGoods(goodsList);
-
-        return APIResult.ok(merchantProduct);
-    }
-}

+ 0 - 70
rankin-product-service/src/main/java/cn/rankin/productservice/proxy/SupportServiceProxy.java

@@ -1,70 +0,0 @@
-package cn.rankin.productservice.proxy;
-
-import cn.rankin.common.utils.api.model.APICode;
-import cn.rankin.common.utils.api.model.APIResult;
-import cn.rankin.data.api.product.entity.Support;
-import cn.rankin.data.api.product.entity.SupportReference;
-import cn.rankin.productservice.service.SupportReferenceService;
-import cn.rankin.productservice.service.SupportService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Service
-public class SupportServiceProxy {
-
-    @Autowired
-    private SupportService supportService;
-
-    @Autowired
-    private SupportReferenceService selfRelationService;
-
-    public Support getSupport(String id) {
-        APIResult<Support> result = supportService.findById(id);
-        Support support = result.getData();
-        if (!result.getSuccess() || support == null) {
-            return support;
-        }
-
-        APIResult<List<Support>> supportResult = getRelationSupport(support.getId());
-        support.setSupportList(supportResult.getData());
-
-        return support;
-    }
-
-    @Transactional
-    public APIResult<List<Support>> updateSelfRelation(String fid, List<String> tids) {
-        if (tids == null) {
-            return APIResult.ok();
-        }else if (tids.size() == 0) {
-            return APIResult.ok(new ArrayList<Support>());
-        }
-
-        APIResult<List<Support>> supportResult = supportService.findByIds(tids);
-        List<Support> supportList = supportResult.getData();
-        if (supportList == null || supportList.size() != tids.size()) {
-            return APIResult.error(APICode.error("存在错误的周边id"));
-        }
-
-        selfRelationService.update(fid, tids);
-
-        return APIResult.ok(supportList);
-    }
-
-    public APIResult<List<Support>> getRelationSupport(String fid) {
-        List<SupportReference> relationList = selfRelationService.findByFid(fid);
-        if (relationList == null || relationList.size() == 0) {
-            return APIResult.ok(new ArrayList<>());
-        }
-
-        List<String> supportIdList = new ArrayList<>();
-        relationList.forEach( relation -> supportIdList.add(relation.getTid()));
-
-        APIResult<List<Support>> supportResult = supportService.findByIds(supportIdList);
-
-        return APIResult.ok(supportResult.getData());
-    }
-}

+ 4 - 9
rankin-product-service/src/main/java/cn/rankin/productservice/repository/CourseRepository.java

@@ -5,8 +5,6 @@ import cn.rankin.common.utils.jpa.BasicJpaRepository;
 import cn.rankin.data.api.product.entity.Course;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -14,13 +12,10 @@ public interface CourseRepository extends BasicJpaRepository<Course, String> {
 
     Long countByCode(String code);
 
-    Course findById(String id);
+    @Query(value = "select c from Course c where c.id in (?1) and c.status = ?2")
+    List<Course> findByIds(List<String> ids, BaseStatusEnum status);
 
-    @Query(value = "select c from Course c where c.id in (:ids) and c.status = :status")
-    List<Course> findByIdIn(@Param("ids") List<String> ids, @Param("status") BaseStatusEnum status);
-
-    @Transactional
     @Modifying(clearAutomatically = true)
-    @Query(value = "update Course c set c.status = :status where c.id = :id")
-    Integer deleteById(@Param("id") String id, @Param("status") BaseStatusEnum status);
+    @Query(value = "update Course c set c.status = 1 where c.id = ?1")
+    Integer deleteById(String id);
 }

+ 3 - 3
rankin-product-service/src/main/java/cn/rankin/productservice/repository/CourseSubRelationRepository.java

@@ -12,7 +12,7 @@ import java.util.List;
 
 public interface CourseSubRelationRepository extends BasicJpaRepository<CourseSubRelation, String> {
 
-    List<CourseSubRelation> findAllByCourseId(String courseId);
+    List<CourseSubRelation> findByCourseId(String courseId);
 
     @Query(value = "select r from CourseSubRelation r where r.courseId = :courseId and r.status = :status order by r.sort")
     List<CourseSubRelation> findByCourseId(@Param("courseId") String courseId, @Param("status") BaseStatusEnum status);
@@ -22,6 +22,6 @@ public interface CourseSubRelationRepository extends BasicJpaRepository<CourseSu
 
     @Transactional
     @Modifying(clearAutomatically = true)
-    @Query(value = "update CourseSubRelation r set r.status = :status where r.courseId = :courseId")
-    Integer deleteByCourseId(@Param("courseId") String courseId, @Param("status") BaseStatusEnum status);
+    @Query(value = "update CourseSubRelation r set r.status = 1 where r.courseId = :courseId")
+    Integer deleteByCourseId(@Param("courseId") String courseId);
 }

+ 9 - 4
rankin-product-service/src/main/java/cn/rankin/productservice/repository/GoodsRepository.java

@@ -2,15 +2,20 @@ package cn.rankin.productservice.repository;
 
 import cn.rankin.common.utils.jpa.BasicJpaRepository;
 import cn.rankin.data.api.product.entity.Goods;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
 import java.util.List;
 
 public interface GoodsRepository extends BasicJpaRepository<Goods, String> {
 
-    @Query(value = "select g from Goods g where g.pid in (?1) and g.status = 0")
-    List<Goods> findByPidIn(List<String> pids);
+    @Query(value = "select g from Goods g where g.pid in (?1) and g.merchantId in (?2) and g.status = 0")
+    List<Goods> findByPidsAndMerchantIds(List<String> pids, List<String> merchantIds);
 
-    @Query(value = "select g from Goods g where g.pid = ?1 and g.status = 0 order by g.sort")
-    List<Goods> findByPid(String pid);
+    @Query(value = "select g from Goods g where g.pid = ?1 and g.merchantId = ?2 and g.status = 0 order by g.sort")
+    List<Goods> findByPidAndMerchantId(String pid, String merchantId);
+
+    @Modifying(clearAutomatically = true)
+    @Query(value = "update Goods g set g.status = 1 where g.id = ?1")
+    Integer deleteById(String id);
 }

+ 2 - 3
rankin-product-service/src/main/java/cn/rankin/productservice/repository/LessonRepository.java

@@ -16,9 +16,8 @@ public interface LessonRepository extends BasicJpaRepository<Lesson, String> {
 
     Long countByCode(String code);
 
-    Long countByIdIn(List<String> ids);
-
-    List<Lesson> findByIdIn(@Param("ids") List<String> ids, @Param("status") BaseStatusEnum status);
+    @Query(value = "select l from Lesson l where l.id in (:ids) and l.status = :status")
+    List<Lesson> findByIds(@Param("ids") List<String> ids, @Param("status") BaseStatusEnum status);
 
     @Transactional
     @Modifying(clearAutomatically = true)

+ 15 - 2
rankin-product-service/src/main/java/cn/rankin/productservice/repository/MerchantProductRepository.java

@@ -1,15 +1,28 @@
 package cn.rankin.productservice.repository;
 
+import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.jpa.BasicJpaRepository;
 import cn.rankin.data.api.product.entity.MerchantProduct;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 
 import java.util.List;
 
 public interface MerchantProductRepository extends BasicJpaRepository<MerchantProduct, String> {
 
     @Query(value = "select m from MerchantProduct m where m.pid in (:pids) and m.status = 0")
-    List<MerchantProduct> findByPidIn(List<String> pids);
+    List<MerchantProduct> findByPidIn(@Param("pids") List<String> pids);
 
-    MerchantProduct findByPid(String pid);
+    List<MerchantProduct> findByPid(String pid);
+
+    MerchantProduct findByPidAndMerchantId(String pid, String merchantId);
+
+    @Modifying(clearAutomatically = true)
+    @Query(value = "update MerchantProduct m set m.status = 1 where m.pid = ?1")
+    Integer deleteByPid(String pid);
+
+    @Modifying(clearAutomatically = true)
+    @Query(value = "update MerchantProduct m set m.status = ?2 where m.id = ?1")
+    Integer updateStatusById(String Id, BaseStatusEnum status);
 }

+ 1 - 1
rankin-product-service/src/main/java/cn/rankin/productservice/repository/PackageItemRelationRepository.java

@@ -3,5 +3,5 @@ package cn.rankin.productservice.repository;
 import cn.rankin.common.utils.jpa.BasicJpaRepository;
 import cn.rankin.data.api.product.entity.PackageProductRelation;
 
-public interface PackageItemRelationRepository extends BasicJpaRepository<PackageProductRelation, String> {
+public interface PackageProductRelationRepository extends BasicJpaRepository<PackageProductRelation, String> {
 }

+ 6 - 0
rankin-product-service/src/main/java/cn/rankin/productservice/repository/ProductRepository.java

@@ -2,8 +2,14 @@ package cn.rankin.productservice.repository;
 
 import cn.rankin.common.utils.jpa.BasicJpaRepository;
 import cn.rankin.data.api.product.entity.Product;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
 
 public interface ProductRepository extends BasicJpaRepository<Product, String> {
 
     Product findByPid(String pid);
+
+    @Modifying(clearAutomatically = true)
+    @Query(value = "update Product p set p.status = 1 where p.pid = ?1")
+    Integer deleteByPid(String pid);
 }

+ 0 - 0
rankin-product-service/src/main/java/cn/rankin/productservice/repository/ProductTagRelationRepository.java


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů