diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java index 9e39423..4edb9d9 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java @@ -21,6 +21,9 @@ public class Order extends Entity { @ApiModelProperty("征婚资料标识") private Long miId; + @ApiModelProperty("订单号") + private String orderCode; + @ApiModelProperty("结算金额") private BigDecimal settlementAmount; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/OrderUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/OrderUserQueryController.java new file mode 100644 index 0000000..73f41e4 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/OrderUserQueryController.java @@ -0,0 +1,32 @@ +package com.qniao.dam.api.query.order.user; + +import com.qniao.dam.api.query.order.user.request.UserPageOrderByOperatorQueryParam; +import com.qniao.dam.api.query.order.user.response.UserPageOrderByOperatorVo; +import com.qniao.dam.query.order.OrderQueryService; +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 OrderUserQueryController { + + @Resource + private OrderQueryService orderQueryService; + + @GetMapping("page/order/by/operator") + @ApiOperation("运营获取订单分页列表") + public QnPage userPageOrderByOperator(PageUtil pageUtil, + UserPageOrderByOperatorQueryParam queryParam, + @RequestParam("userId") Long userId, + @RequestHeader(name = RequestHeaderFields.FIELD_ORGANIZATION_ID) Long orgId) { + return PageUtil.convert(orderQueryService.pageOrderByOperator(pageUtil, queryParam), UserPageOrderByOperatorVo.class); + } + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/request/UserPageOrderByOperatorQueryParam.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/request/UserPageOrderByOperatorQueryParam.java new file mode 100644 index 0000000..a571d2f --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/request/UserPageOrderByOperatorQueryParam.java @@ -0,0 +1,24 @@ +package com.qniao.dam.api.query.order.user.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +@Data +public class UserPageOrderByOperatorQueryParam { + + @ApiModelProperty("订单号") + private String orderCode; + + @ApiModelProperty("订单开始时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime orderTimeFrom; + + @ApiModelProperty("订单结束时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime orderTimeTo; + + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/response/UserPageOrderByOperatorVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/response/UserPageOrderByOperatorVo.java new file mode 100644 index 0000000..6c077b0 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/response/UserPageOrderByOperatorVo.java @@ -0,0 +1,45 @@ +package com.qniao.dam.api.query.order.user.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class UserPageOrderByOperatorVo { + + @ApiModelProperty("订单标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long orderId; + + @ApiModelProperty("订单号") + private String orderCode; + + @ApiModelProperty("订单时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime orderTime; + + @ApiModelProperty("用户标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long userId; + + @ApiModelProperty("用户手机号") + private String userPhone; + + @ApiModelProperty("征婚资料标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long miId; + + @ApiModelProperty("征婚资料名称") + private String miName; + + @ApiModelProperty("结算金额") + private BigDecimal settlementAmount; + + private List orderItemList; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/response/UserPageOrderItemByOperatorVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/response/UserPageOrderItemByOperatorVo.java new file mode 100644 index 0000000..89e0c5d --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/response/UserPageOrderItemByOperatorVo.java @@ -0,0 +1,27 @@ +package com.qniao.dam.api.query.order.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.ProductSubCategoryEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class UserPageOrderItemByOperatorVo { + + @ApiModelProperty("订单标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long orderId; + + @ApiModelProperty("订单项标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long orderItemId; + + @ApiModelProperty("产品主分类") + private ProductMainCategoryEnum mainCategory; + + @ApiModelProperty("产品次分类") + private ProductSubCategoryEnum subCategory; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/OrderViewDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/OrderViewDao.java new file mode 100644 index 0000000..4a0b25a --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/OrderViewDao.java @@ -0,0 +1,19 @@ +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.order.user.request.UserPageOrderByOperatorQueryParam; +import com.qniao.dam.api.query.order.user.response.UserPageOrderByOperatorVo; +import com.qniao.dam.api.query.order.user.response.UserPageOrderItemByOperatorVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface OrderViewDao { + IPage pageProductByOperator(Page pageWithoutOrders, + @Param("queryParam") UserPageOrderByOperatorQueryParam queryParam); + + List listOrderItemByOperatorByOrderIds(@Param("orderIdList") List orderIdList); +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java new file mode 100644 index 0000000..6509ff1 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java @@ -0,0 +1,10 @@ +package com.qniao.dam.query.order; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.qniao.dam.api.query.order.user.request.UserPageOrderByOperatorQueryParam; +import com.qniao.dam.api.query.order.user.response.UserPageOrderByOperatorVo; +import com.qniao.framework.utils.PageUtil; + +public interface OrderQueryService { + IPage pageOrderByOperator(PageUtil pageUtil, UserPageOrderByOperatorQueryParam queryParam); +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java new file mode 100644 index 0000000..a64675a --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java @@ -0,0 +1,36 @@ +package com.qniao.dam.query.order.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.qniao.dam.api.query.order.user.request.UserPageOrderByOperatorQueryParam; +import com.qniao.dam.api.query.order.user.response.UserPageOrderByOperatorVo; +import com.qniao.dam.api.query.order.user.response.UserPageOrderItemByOperatorVo; +import com.qniao.dam.infrastructure.persistent.dao.view.OrderViewDao; +import com.qniao.dam.query.order.OrderQueryService; +import com.qniao.framework.utils.PageUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +public class OrderQueryServiceImpl implements OrderQueryService { + + @Resource + private OrderViewDao orderViewDao; + + @Override + public IPage pageOrderByOperator(PageUtil pageUtil, UserPageOrderByOperatorQueryParam queryParam) { + IPage page = orderViewDao.pageProductByOperator(pageUtil.toPageWithoutOrders(), queryParam); + if (page.getRecords().size() > 0) { + List orderIdList = page.getRecords().stream().map(UserPageOrderByOperatorVo::getOrderId).collect(Collectors.toList()); + List allOrderItemList = orderViewDao.listOrderItemByOperatorByOrderIds(orderIdList); + Map> allOrderItemMap = allOrderItemList.stream().collect(Collectors.groupingBy(UserPageOrderItemByOperatorVo::getOrderId)); + page.getRecords().forEach(record -> { + record.setOrderItemList(allOrderItemMap.get(record.getOrderId())); + }); + } + return page; + } +} diff --git a/dating-agency-mall-server/src/main/resources/mapper/order/OrderViewMapper.xml b/dating-agency-mall-server/src/main/resources/mapper/order/OrderViewMapper.xml new file mode 100644 index 0000000..e0e848a --- /dev/null +++ b/dating-agency-mall-server/src/main/resources/mapper/order/OrderViewMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + +