提交 2b845968 authored 作者: YunaiV's avatar YunaiV

商品分类的迁移,完成并测试

上级 b1313bf5
...@@ -11,6 +11,7 @@ import org.apache.dubbo.rpc.cluster.router.tag.TagRouter; ...@@ -11,6 +11,7 @@ import org.apache.dubbo.rpc.cluster.router.tag.TagRouter;
/** /**
* 基于 Dubbo 标签路由规则(http://dubbo.apache.org/zh-cn/docs/user/demos/routing-rule.html),实现如下功能: * 基于 Dubbo 标签路由规则(http://dubbo.apache.org/zh-cn/docs/user/demos/routing-rule.html),实现如下功能:
* 1. 本地开发调试时,在带有 Dubbo Tag 的情况下,优先调用指定 Tag 的服务提供者。这样,我们可以将本地启动的服务提供者打上相应的 Tag,即可优先调用本地; * 1. 本地开发调试时,在带有 Dubbo Tag 的情况下,优先调用指定 Tag 的服务提供者。这样,我们可以将本地启动的服务提供者打上相应的 Tag,即可优先调用本地;
* 并且,前端在调用开发环境上的 Dubbo 服务时,因为不带有 Dubbo Tag,所以不会调用到后端开发本地启动的 Dubbo 服务提供者;
* 2. TODO 优化点:蓝绿发布、灰度发布 * 2. TODO 优化点:蓝绿发布、灰度发布
* *
* 实现逻辑为: * 实现逻辑为:
......
### /product-category/tree 成功
GET {{baseUrl}}/product-category/tree
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer {{accessToken}}
dubbo-tag: {{dubboTag}}
###
...@@ -2,19 +2,19 @@ package cn.iocoder.mall.managementweb.controller.product; ...@@ -2,19 +2,19 @@ package cn.iocoder.mall.managementweb.controller.product;
import cn.iocoder.common.framework.vo.CommonResult; import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.managementweb.controller.product.vo.category.ProductCategoryCreateReqVO; import cn.iocoder.mall.managementweb.controller.product.vo.category.ProductCategoryCreateReqVO;
import cn.iocoder.mall.managementweb.controller.product.vo.category.ProductCategoryTreeNodeRespVO;
import cn.iocoder.mall.managementweb.controller.product.vo.category.ProductCategoryUpdateReqVO; import cn.iocoder.mall.managementweb.controller.product.vo.category.ProductCategoryUpdateReqVO;
import cn.iocoder.mall.managementweb.manager.product.ProductCategoryManager; import cn.iocoder.mall.managementweb.manager.product.ProductCategoryManager;
import cn.iocoder.security.annotations.RequiresPermissions;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List;
import static cn.iocoder.common.framework.vo.CommonResult.success; import static cn.iocoder.common.framework.vo.CommonResult.success;
...@@ -22,7 +22,7 @@ import static cn.iocoder.common.framework.vo.CommonResult.success; ...@@ -22,7 +22,7 @@ import static cn.iocoder.common.framework.vo.CommonResult.success;
* 商品分类 Controller * 商品分类 Controller
*/ */
@RestController @RestController
@RequestMapping("/product_category") @RequestMapping("/product-category")
@Api(tags = "商品分类") @Api(tags = "商品分类")
@Validated @Validated
public class ProductCategoryController { public class ProductCategoryController {
...@@ -32,12 +32,14 @@ public class ProductCategoryController { ...@@ -32,12 +32,14 @@ public class ProductCategoryController {
@PostMapping("/create") @PostMapping("/create")
@ApiOperation("创建商品分类") @ApiOperation("创建商品分类")
@RequiresPermissions("product:category:create")
public CommonResult<Integer> createProductCategory(@Valid ProductCategoryCreateReqVO createVO) { public CommonResult<Integer> createProductCategory(@Valid ProductCategoryCreateReqVO createVO) {
return success(productCategoryManager.createProductCategory(createVO)); return success(productCategoryManager.createProductCategory(createVO));
} }
@PostMapping("/update") @PostMapping("/update")
@ApiOperation("更新商品分类") @ApiOperation("更新商品分类")
@RequiresPermissions("product:category:update")
public CommonResult<Boolean> updateProductCategory(@Valid ProductCategoryUpdateReqVO updateVO) { public CommonResult<Boolean> updateProductCategory(@Valid ProductCategoryUpdateReqVO updateVO) {
productCategoryManager.updateProductCategory(updateVO); productCategoryManager.updateProductCategory(updateVO);
return success(true); return success(true);
...@@ -45,10 +47,18 @@ public class ProductCategoryController { ...@@ -45,10 +47,18 @@ public class ProductCategoryController {
@PostMapping("/delete") @PostMapping("/delete")
@ApiOperation("删除商品分类") @ApiOperation("删除商品分类")
@RequiresPermissions("product:category:delete")
@ApiImplicitParam(name = "productCategoryId", value = "商品分类编号", required = true) @ApiImplicitParam(name = "productCategoryId", value = "商品分类编号", required = true)
public CommonResult<Boolean> deleteProductCategory(@RequestParam("productCategoryId") Integer productCategoryId) { public CommonResult<Boolean> deleteProductCategory(@RequestParam("productCategoryId") Integer productCategoryId) {
productCategoryManager.deleteProductCategory(productCategoryId); productCategoryManager.deleteProductCategory(productCategoryId);
return success(true); return success(true);
} }
@GetMapping("/tree")
@ApiOperation("获得资源树")
@RequiresPermissions("product:category:tree")
public CommonResult<List<ProductCategoryTreeNodeRespVO>> treeProductCategory() {
return success(productCategoryManager.treeProductCategory());
}
} }
...@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel; ...@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.Date;
@ApiModel("商品分类 Response VO") @ApiModel("商品分类 Response VO")
@Data @Data
public class ProductCategoryRespVO { public class ProductCategoryRespVO {
...@@ -22,5 +24,7 @@ public class ProductCategoryRespVO { ...@@ -22,5 +24,7 @@ public class ProductCategoryRespVO {
private Integer sort; private Integer sort;
@ApiModelProperty(value = "状态", required = true, example = "1", notes = "见 CommonStatusEnum 枚举") @ApiModelProperty(value = "状态", required = true, example = "1", notes = "见 CommonStatusEnum 枚举")
private Integer status; private Integer status;
@ApiModelProperty(value = "创建时间", required = true)
private Date createTime;
} }
...@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel; ...@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.Date;
import java.util.List; import java.util.List;
@ApiModel("商品分类 Response VO") @ApiModel("商品分类 Response VO")
...@@ -24,6 +25,8 @@ public class ProductCategoryTreeNodeRespVO { ...@@ -24,6 +25,8 @@ public class ProductCategoryTreeNodeRespVO {
private Integer sort; private Integer sort;
@ApiModelProperty(value = "状态", required = true, example = "1", notes = "见 CommonStatusEnum 枚举") @ApiModelProperty(value = "状态", required = true, example = "1", notes = "见 CommonStatusEnum 枚举")
private Integer status; private Integer status;
@ApiModelProperty(value = "创建时间", required = true)
private Date createTime;
/** /**
* 子节点 * 子节点
......
...@@ -3,12 +3,14 @@ package cn.iocoder.mall.productservice.rpc.category.dto; ...@@ -3,12 +3,14 @@ package cn.iocoder.mall.productservice.rpc.category.dto;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.io.Serializable;
/** /**
* 商品分类列表查询 DTO * 商品分类列表查询 DTO
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class ProductCategoryListQueryReqDTO { public class ProductCategoryListQueryReqDTO implements Serializable {
/** /**
* 父编号 * 父编号
......
spring: spring:
# 数据源配置项 # 数据源配置项
datasource: datasource:
url: jdbc:mysql://400-infra.server.iocoder.cn:3306/mall_system?useSSL=false&useUnicode=true&characterEncoding=UTF-8 url: jdbc:mysql://400-infra.server.iocoder.cn:3306/mall_product?useSSL=false&useUnicode=true&characterEncoding=UTF-8
driver-class-name: com.mysql.jdbc.Driver driver-class-name: com.mysql.jdbc.Driver
username: root username: root
password: 3WLiVUBEwTbvAfsh password: 3WLiVUBEwTbvAfsh
......
spring: spring:
# 数据源配置项 # 数据源配置项
datasource: datasource:
url: jdbc:mysql://400-infra.server.iocoder.cn:3306/mall_system?useSSL=false&useUnicode=true&characterEncoding=UTF-8 url: jdbc:mysql://400-infra.server.iocoder.cn:3306/mall_product?useSSL=false&useUnicode=true&characterEncoding=UTF-8
driver-class-name: com.mysql.jdbc.Driver driver-class-name: com.mysql.jdbc.Driver
username: root username: root
password: 3WLiVUBEwTbvAfsh password: 3WLiVUBEwTbvAfsh
......
...@@ -34,25 +34,7 @@ dubbo: ...@@ -34,25 +34,7 @@ dubbo:
provider: provider:
filter: -exception filter: -exception
validation: true # 开启 Provider 参数校验 validation: true # 开启 Provider 参数校验
OAuth2Rpc: ProductCategoryRpc:
version: 1.0.0
AdminRpc:
version: 1.0.0
ResourceRpc:
version: 1.0.0
RoleRpc:
version: 1.0.0
PermissionRpc:
version: 1.0.0
DepartmentRpc:
version: 1.0.0
DataDictRpc:
version: 1.0.0
ProductExceptionLogRpc:
version: 1.0.0
ProductAccessLogRpc:
version: 1.0.0
ErrorCodeRpc:
version: 1.0.0 version: 1.0.0
# Dubbo 服务消费者的配置 # Dubbo 服务消费者的配置
consumer: consumer:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论