diff --git a/dating-agency-mall-server/pom.xml b/dating-agency-mall-server/pom.xml
index 5a0b602..7f85327 100644
--- a/dating-agency-mall-server/pom.xml
+++ b/dating-agency-mall-server/pom.xml
@@ -61,6 +61,11 @@
dating-agency-mall-entity
0.0.1-SNAPSHOT
+
+ com.qniao
+ dating-agency-uec-entity
+ 0.0.1-SNAPSHOT
+
diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java
new file mode 100644
index 0000000..39e44b3
--- /dev/null
+++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java
@@ -0,0 +1,32 @@
+package com.qniao.dam.api.query.product.user;
+
+import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam;
+import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo;
+import com.qniao.dam.query.product.ProductQueryService;
+import com.qniao.dau.infrastructure.constant.RequestHeaderFields;
+import com.qniao.domain.QnPage;
+import com.qniao.framework.utils.PageUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping("user")
+@Api(tags = "商品")
+public class ProductUserQueryController {
+
+ @Resource
+ private ProductQueryService productQueryService;
+
+ @GetMapping("page/product/by/operator")
+ @ApiOperation("运营获取商品分页列表")
+ public QnPage userPageProductByOperator(PageUtil pageUtil,
+ UserPageProductByOperatorQueryParam queryParam,
+ @RequestParam("userId") Long userId,
+ @RequestHeader(name = RequestHeaderFields.FIELD_ORGANIZATION_ID) Long orgId) {
+ return PageUtil.convert(productQueryService.pageProductByOperator(pageUtil, queryParam), UserPageProductByOperatorVo.class);
+ }
+
+}
diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/request/UserPageProductByOperatorQueryParam.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/request/UserPageProductByOperatorQueryParam.java
new file mode 100644
index 0000000..3914059
--- /dev/null
+++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/request/UserPageProductByOperatorQueryParam.java
@@ -0,0 +1,15 @@
+package com.qniao.dam.api.query.product.user.request;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class UserPageProductByOperatorQueryParam {
+
+ @ApiModelProperty("产品主分类")
+ private Integer mainCategory;
+
+ @ApiModelProperty("产品次分类")
+ private Integer subCategory;
+
+}
diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByOperatorVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByOperatorVo.java
new file mode 100644
index 0000000..9663001
--- /dev/null
+++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByOperatorVo.java
@@ -0,0 +1,55 @@
+package com.qniao.dam.api.query.product.user.response;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum;
+import com.qniao.dam.domian.aggregate.product.constant.ProductStatusEnum;
+import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
+import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermUnitEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class UserPageProductByOperatorVo {
+
+ @ApiModelProperty("商品标识")
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long productId;
+
+ @ApiModelProperty("商品规格标识")
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long productSpecId;
+
+ @ApiModelProperty("产品主分类")
+ private ProductMainCategoryEnum mainCategory;
+
+ @ApiModelProperty("产品次分类")
+ private ProductSubCategoryEnum subCategory;
+
+ @ApiModelProperty("产品标题")
+ private String productTitle;
+
+ @ApiModelProperty("产品描述")
+ private String productDesc;
+
+ @ApiModelProperty("详情描述")
+ private String detailDesc;
+
+ @ApiModelProperty("状态(已上架、已下架)")
+ private ProductStatusEnum status;
+
+ @ApiModelProperty("原价")
+ private BigDecimal unitOriginalPrice;
+
+ @ApiModelProperty("售价")
+ private BigDecimal unitSellingPrice;
+
+ @ApiModelProperty("产品规格(周期、次数)")
+ private ProductSpecTermUnitEnum productSpecUnit;
+
+ @ApiModelProperty("有效期")
+ private String validityPeriodValue;
+
+}
diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java
new file mode 100644
index 0000000..81dfbc3
--- /dev/null
+++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java
@@ -0,0 +1,15 @@
+package com.qniao.dam.infrastructure.persistent.dao.view;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam;
+import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface ProductViewDao {
+
+ IPage pageProductByOperator(Page