From 147e474bdf890454242baad05fa5cc9c0f4db71f Mon Sep 17 00:00:00 2001 From: "996472796@qq.com" <996472796@qq.com> Date: Mon, 8 Apr 2024 09:12:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B4=BB=E5=8A=A8=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/constant/ActivityStatusEnum.java | 36 +++++++++ .../constant/ProductMainCategoryEnum.java | 4 +- .../aggregate/activity/entity/Activity.java | 66 +++++++++++++++++ .../activity/entity/ActivityProduct.java | 72 ++++++++++++++++++ .../domain/aggregate/order/entity/Order.java | 4 + .../user/ActivityUserCommandController.java | 29 ++++++++ .../activity/user/request/ActivityDto.java | 42 +++++++++++ .../user/OrderUserCommandController.java | 10 +++ .../user/request/UserBatchSubmitOrderDto.java | 47 ++++++++++++ .../user/ActivityUserQueryController.java | 38 ++++++++++ .../user/request/ActivityQueryDto.java | 7 ++ .../user/response/ActivityDetailsVo.java | 18 +++++ .../user/response/ActivityProductListVo.java | 20 +++++ .../activity/user/response/ActivityVo.java | 12 +++ .../user/ProductUserQueryController.java | 8 ++ .../UserPageProductByOperatorQueryParam.java | 4 + .../UserPageProductByCustomerExtendVo.java | 18 +++++ .../UserPageProductByCustomerGroupVo.java | 35 +++++++++ .../activity/ActivityApplicationService.java | 74 +++++++++++++++++++ .../order/OrderApplicationService.java | 12 ++- .../aggregate/activity/ActivityAggregate.java | 18 +++++ .../repository/ActivityRepository.java | 7 ++ .../persistent/dao/activity/ActivityDao.java | 24 ++++++ .../dao/activity/ActivityProductDao.java | 12 +++ .../persistent/dao/view/ProductViewDao.java | 7 ++ .../impl/ActivityRepositoryImpl.java | 53 +++++++++++++ .../query/product/ProductQueryService.java | 3 + .../product/impl/ProductQueryServiceImpl.java | 29 +++++++- .../mapper/activity/ActivityMapper.xml | 15 ++++ .../mapper/product/ProductViewMapper.xml | 64 ++++++++++++++++ 30 files changed, 782 insertions(+), 6 deletions(-) create mode 100644 dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/activity/constant/ActivityStatusEnum.java create mode 100644 dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/activity/entity/Activity.java create mode 100644 dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/activity/entity/ActivityProduct.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/activity/user/ActivityUserCommandController.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/activity/user/request/ActivityDto.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserBatchSubmitOrderDto.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/ActivityUserQueryController.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/request/ActivityQueryDto.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityDetailsVo.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityProductListVo.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityVo.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByCustomerExtendVo.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByCustomerGroupVo.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/activity/ActivityApplicationService.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/activity/ActivityAggregate.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/activity/repository/ActivityRepository.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/activity/ActivityDao.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/activity/ActivityProductDao.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ActivityRepositoryImpl.java create mode 100644 dating-agency-mall-server/src/main/resources/mapper/activity/ActivityMapper.xml diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/activity/constant/ActivityStatusEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/activity/constant/ActivityStatusEnum.java new file mode 100644 index 0000000..142134d --- /dev/null +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/activity/constant/ActivityStatusEnum.java @@ -0,0 +1,36 @@ +package com.qniao.dam.domian.aggregate.activity.constant; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonValue; +import com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum; +import lombok.Getter; + +@Getter +@JsonFormat(shape = JsonFormat.Shape.OBJECT) +public enum ActivityStatusEnum { + + ENABLE(1, "启用"), + DISABLE(0, "停用"); + + @EnumValue + @JsonValue + private final Integer value; + private final String desc; + + ActivityStatusEnum(Integer value, String desc) { + this.value = value; + this.desc = desc; + } + + @JsonCreator + public static ActivityStatusEnum get(Object code) { + for (ActivityStatusEnum e : ActivityStatusEnum.values()) { + if (e.getValue().equals(code)) { + return e; + } + } + return null; + } +} diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java index 6f74014..34403b4 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java @@ -16,8 +16,8 @@ public enum ProductMainCategoryEnum { AUTHENTICATION(1, "认证"), DATE_EDITING(2, "资料编辑"), UNLOCKING_INFORMATION(3, "解锁信息"), - OFFLINE_SERVICES(4, "线下服务"); - + OFFLINE_SERVICES(4, "线下服务"), + VIP(5,"会员"); @EnumValue @JsonValue private final Integer value; diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/activity/entity/Activity.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/activity/entity/Activity.java new file mode 100644 index 0000000..5a0f946 --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/activity/entity/Activity.java @@ -0,0 +1,66 @@ +package com.qniao.dam.domain.aggregate.activity.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.qniao.domain.Entity; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.util.Assert; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 活动表 + * + * @date 2024/04/07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_activity") +public class Activity extends Entity { + + private static final long serialVersionUID = 1L; + + + /** + * 活动标题 + */ + @ApiModelProperty("活动标题") + private String activityName; + + /** + * 活动描述 + */ + @ApiModelProperty("活动描述") + private String explain; + + /** + * 活动开始时间 + */ + @ApiModelProperty("活动开始时间") + private LocalDateTime startTime; + + /** + * 活动结束时间 + */ + @ApiModelProperty("活动结束时间") + private LocalDateTime endTime; + + /** + * 状态 + */ + @ApiModelProperty("状态") + private Integer status; + + + private transient List activityProductList; + + public static void check(Activity entity){ + Assert.notNull(entity, "活动表不存在"); + } +} diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/activity/entity/ActivityProduct.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/activity/entity/ActivityProduct.java new file mode 100644 index 0000000..46512ba --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/activity/entity/ActivityProduct.java @@ -0,0 +1,72 @@ +package com.qniao.dam.domain.aggregate.activity.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.qniao.domain.Entity; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.util.Assert; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 活动产品表 + * + * @date 2024/04/07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_activity_product") +public class ActivityProduct extends Entity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("活动id") + private Long activityId; + + + /** + * 产品id + */ + @ApiModelProperty("产品id") + private Long productId; + + /** + * 产品规格 + */ + @ApiModelProperty("产品规格") + private Long productSpecId; + + /** + * 是否赠品 + */ + @ApiModelProperty("是否赠品") + private Boolean freebie; + + @ApiModelProperty("活动原价") + private BigDecimal activityUnitOriginalPrice; + + @ApiModelProperty("活动售价") + private BigDecimal activityUnitSellingPrice; + + /** + * + */ + @ApiModelProperty("") + private LocalDateTime createTime; + + /** + * + */ + @ApiModelProperty("") + private LocalDateTime updateTime; + + public static void check(ActivityProduct entity){ + Assert.notNull(entity, "活动产品表不存在"); + } +} 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 308cb69..f5efeb5 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 @@ -35,4 +35,8 @@ public class Order extends Entity { private OrderStatusEnum status; private transient List orderItemList; + + private transient Integer groupType; + + private transient Long activityId; } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/activity/user/ActivityUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/activity/user/ActivityUserCommandController.java new file mode 100644 index 0000000..5c6911c --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/activity/user/ActivityUserCommandController.java @@ -0,0 +1,29 @@ +package com.qniao.dam.api.command.activity.user; + +import com.qniao.dam.api.command.activity.user.request.ActivityDto; +import com.qniao.dam.application.service.activity.ActivityApplicationService; +import com.qniao.dam.domain.aggregate.activity.entity.Activity; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@Api(tags = "活动") +@RestController +@RequestMapping("user") +public class ActivityUserCommandController { + + @Resource + private ActivityApplicationService activityApplicationService; + + @ApiOperation("保存活动") + @PostMapping("save/activity") + public String saveActivity(@RequestBody ActivityDto activityDto){ + Activity activity = activityDto.trans2Domain(); + return activityApplicationService.saveActivity(activity); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/activity/user/request/ActivityDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/activity/user/request/ActivityDto.java new file mode 100644 index 0000000..55459a1 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/activity/user/request/ActivityDto.java @@ -0,0 +1,42 @@ +package com.qniao.dam.api.command.activity.user.request; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.qniao.dam.domain.aggregate.activity.entity.Activity; +import com.qniao.dam.domain.aggregate.activity.entity.ActivityProduct; +import com.qniao.dam.domian.aggregate.activity.constant.ActivityStatusEnum; +import com.qniao.framework.utils.TypeConvertUtils; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class ActivityDto { + + @ApiModelProperty("活动id") + private Long id; + + @ApiModelProperty("活动标题") + private String activityName; + + @ApiModelProperty("活动描述") + private String explain; + + @ApiModelProperty("活动开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startTime; + + @ApiModelProperty("活动结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endTime; + + @ApiModelProperty("活动产品集合") + private List activityProductList; + + public Activity trans2Domain(){ + Activity activity = TypeConvertUtils.convert(this,Activity.class); + activity.setStatus(ActivityStatusEnum.ENABLE.getValue()); + return activity; + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java index cfdb87b..638835c 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java @@ -1,5 +1,6 @@ package com.qniao.dam.api.command.order.user; +import com.qniao.dam.api.command.order.user.request.UserBatchSubmitOrderDto; import com.qniao.dam.api.command.order.user.request.UserSubmitOrderDto; import com.qniao.dam.api.command.order.user.response.UserSubmitOrderVo; import com.qniao.dam.application.service.order.OrderApplicationService; @@ -28,4 +29,13 @@ public class OrderUserCommandController { return orderApplicationService.submit(order); } + @ApiOperation("用户批量提交订单") + @PostMapping("batch/submit/order") + public UserSubmitOrderVo userBatchSubmitOrder(@RequestBody @Valid UserBatchSubmitOrderDto dto, + @RequestParam("userId") Long userId) { + Order order = dto.trans2Domain(); + order.setUserId(userId); + return orderApplicationService.submit(order); + } + } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserBatchSubmitOrderDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserBatchSubmitOrderDto.java new file mode 100644 index 0000000..013b902 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserBatchSubmitOrderDto.java @@ -0,0 +1,47 @@ +package com.qniao.dam.api.command.order.user.request; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.qniao.dam.domain.aggregate.order.entity.Order; +import com.qniao.dam.domain.aggregate.order.entity.OrderItem; +import com.qniao.domain.Trans2DomainAssembler; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.ArrayList; +import java.util.List; + +@Data +public class UserBatchSubmitOrderDto { + + @ApiModelProperty("征婚资料标识") + @NotNull(message = "征婚资料标识不能为空") + private Long miId; + + @ApiModelProperty("产品规格标识集合") + @NotNull(message = "产品规格标识集合不能为空") + private List productSpecIds; + + @ApiModelProperty("活动id") + private Long activityId; + + @ApiModelProperty("商品组类型 0 商品 1 活动产品") + private Integer groupType; + + public Order trans2Domain() { + Order order = new Order(); + order.setMiId(miId); + order.setActivityId(activityId); + order.setGroupType(groupType); + List orderItemList = new ArrayList<>(); + productSpecIds.forEach(e->{ + OrderItem orderItem = new OrderItem(); + orderItem.setProductSpecId(e); + orderItem.setQuantity(1); + orderItemList.add(orderItem); + }); + order.setOrderItemList(orderItemList); + return order; + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/ActivityUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/ActivityUserQueryController.java new file mode 100644 index 0000000..1954b67 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/ActivityUserQueryController.java @@ -0,0 +1,38 @@ +package com.qniao.dam.api.query.activity.user; + +import com.qniao.dam.api.query.activity.user.request.ActivityQueryDto; +import com.qniao.dam.api.query.activity.user.response.ActivityDetailsVo; +import com.qniao.dam.api.query.activity.user.response.ActivityVo; +import com.qniao.dam.application.service.activity.ActivityApplicationService; +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 ActivityUserQueryController { + + @Resource + private ActivityApplicationService activityApplicationService; + + @GetMapping("get/activity/by/operator/page") + @ApiOperation("运营获取活动列表") + public QnPage pageActivityOperation(PageUtil pageUtil, + ActivityQueryDto dto, + @RequestParam("userId") Long userId, + @RequestHeader(name = RequestHeaderFields.FIELD_ORGANIZATION_ID) Long orgId){ + return activityApplicationService.pageActivityOperation(pageUtil,dto,userId,orgId); + } + + @GetMapping("get/activity/by/operator/details") + @ApiOperation("运营获取活动详情") + public ActivityDetailsVo getActivityDetails(Long id){ + return activityApplicationService.getActivityDetails(id); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/request/ActivityQueryDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/request/ActivityQueryDto.java new file mode 100644 index 0000000..5390fd0 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/request/ActivityQueryDto.java @@ -0,0 +1,7 @@ +package com.qniao.dam.api.query.activity.user.request; + +import lombok.Data; + +@Data +public class ActivityQueryDto { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityDetailsVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityDetailsVo.java new file mode 100644 index 0000000..6ee995e --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityDetailsVo.java @@ -0,0 +1,18 @@ +package com.qniao.dam.api.query.activity.user.response; + +import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo; +import com.qniao.dam.domain.aggregate.activity.entity.Activity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class ActivityDetailsVo extends Activity { + + @ApiModelProperty("产品集合") + private List activityProductListVos; + + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityProductListVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityProductListVo.java new file mode 100644 index 0000000..b9c114d --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityProductListVo.java @@ -0,0 +1,20 @@ +package com.qniao.dam.api.query.activity.user.response; + +import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ActivityProductListVo extends UserPageProductByOperatorVo { + + @ApiModelProperty("是否赠品") + private Boolean freebie; + + @ApiModelProperty("活动原价") + private BigDecimal activityUnitOriginalPrice; + + @ApiModelProperty("活动售价") + private BigDecimal activityUnitSellingPrice; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityVo.java new file mode 100644 index 0000000..7e27dfa --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityVo.java @@ -0,0 +1,12 @@ +package com.qniao.dam.api.query.activity.user.response; + +import com.qniao.dam.domain.aggregate.activity.entity.Activity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class ActivityVo extends Activity { + + @ApiModelProperty("活动状态 0 未开始 1 进行中 2 已结束") + private Integer activeState; +} 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 index 6f15d26..8a8a9eb 100644 --- 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 @@ -3,6 +3,7 @@ package com.qniao.dam.api.query.product.user; import com.qniao.dam.api.query.product.user.request.UserPageProductByCustomerQueryParam; import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam; import com.qniao.dam.api.query.product.user.response.UserGetProductDetailByOperatorVo; +import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerGroupVo; import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerVo; import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo; import com.qniao.dam.query.product.ProductQueryService; @@ -15,6 +16,7 @@ import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; @RestController @RequestMapping("user") @@ -55,4 +57,10 @@ public class ProductUserQueryController { @RequestParam("userId") Long userId) { return PageUtil.convert(productQueryService.pageProductByCustomer(pageUtil, queryParam), UserPageProductByCustomerVo.class); } + + @GetMapping("get/product/by/customer/list") + @ApiOperation("客户获取商品列表") + public List getPageProductByCustomer(){ + return productQueryService.getPageProductByCustomer(); + } } 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 index 3914059..f56502a 100644 --- 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 @@ -3,6 +3,8 @@ package com.qniao.dam.api.query.product.user.request; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data public class UserPageProductByOperatorQueryParam { @@ -12,4 +14,6 @@ public class UserPageProductByOperatorQueryParam { @ApiModelProperty("产品次分类") private Integer subCategory; + private List productIds; + } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByCustomerExtendVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByCustomerExtendVo.java new file mode 100644 index 0000000..4aef5f9 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByCustomerExtendVo.java @@ -0,0 +1,18 @@ +package com.qniao.dam.api.query.product.user.response; + +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; +import lombok.Data; + +@Data +public class UserPageProductByCustomerExtendVo extends UserPageProductByCustomerVo{ + + @ApiModelProperty("分组类型 0 商品 1 活动") + private Integer groupType; + + @ApiModelProperty("商品名称") + private String productName; + + @ApiModelProperty("数据id") + private Long id; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByCustomerGroupVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByCustomerGroupVo.java new file mode 100644 index 0000000..ffd36c2 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByCustomerGroupVo.java @@ -0,0 +1,35 @@ +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 io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class UserPageProductByCustomerGroupVo { + + @ApiModelProperty("活动id") + @JsonSerialize(using = ToStringSerializer.class) + private Long activityId; + + @ApiModelProperty("商品组类型 0 商品 1 活动产品") + private Integer groupType; + + @ApiModelProperty("商品名称") + private String productName; + + @ApiModelProperty("原价") + private BigDecimal unitOriginalPrice; + + @ApiModelProperty("售价") + private BigDecimal unitSellingPrice; + + @ApiModelProperty("有效期") + private String validityPeriodValue; + + @ApiModelProperty("商品集合") + private List productList; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/activity/ActivityApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/activity/ActivityApplicationService.java new file mode 100644 index 0000000..aeccc3e --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/activity/ActivityApplicationService.java @@ -0,0 +1,74 @@ +package com.qniao.dam.application.service.activity; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.qniao.dam.api.query.activity.user.request.ActivityQueryDto; +import com.qniao.dam.api.query.activity.user.response.ActivityDetailsVo; +import com.qniao.dam.api.query.activity.user.response.ActivityProductListVo; +import com.qniao.dam.api.query.activity.user.response.ActivityVo; +import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam; +import com.qniao.dam.domain.aggregate.activity.ActivityAggregate; +import com.qniao.dam.domain.aggregate.activity.entity.Activity; +import com.qniao.dam.domain.aggregate.activity.entity.ActivityProduct; +import com.qniao.dam.infrastructure.persistent.dao.activity.ActivityDao; +import com.qniao.dam.infrastructure.persistent.dao.activity.ActivityProductDao; +import com.qniao.dam.infrastructure.persistent.dao.view.ProductViewDao; +import com.qniao.domain.BaseApplicationService; +import com.qniao.domain.QnPage; +import com.qniao.framework.utils.PageUtil; +import com.qniao.framework.utils.TypeConvertUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +@Slf4j +public class ActivityApplicationService extends BaseApplicationService { + + @Resource + private ActivityAggregate aggregate; + + @Resource + private ActivityDao activityDao; + + @Resource + private ProductViewDao productViewDao; + + @Resource + private ActivityProductDao activityProductDao; + + public String saveActivity(Activity activity){ + return aggregate.saveActivity(activity); + } + + public QnPage pageActivityOperation(PageUtil pageUtil, + ActivityQueryDto dto, + Long userId, + Long orgId){ + return PageUtil.convert(activityDao.pageActivityOperation(pageUtil.toPageWithoutOrders(),dto,userId,orgId)); + } + + public ActivityDetailsVo getActivityDetails(Long id){ + ActivityDetailsVo vo = TypeConvertUtils.convert(activityDao.selectById(id),ActivityDetailsVo.class); + List activityProductList = activityProductDao.selectList(Wrappers.lambdaQuery(new ActivityProduct()).eq(ActivityProduct::getActivityId,vo.getId())); + Map map = activityProductList.stream().collect(Collectors.toMap(ActivityProduct::getProductId,ActivityProduct -> ActivityProduct)); + UserPageProductByOperatorQueryParam queryParam = new UserPageProductByOperatorQueryParam(); + queryParam.setProductIds(new ArrayList<>(map.keySet())); + List activityProductListVo = TypeConvertUtils.convert(productViewDao.selectProductByOperator(queryParam),ActivityProductListVo.class); + activityProductListVo.forEach(v->{ + ActivityProduct av = map.get(v.getProductId()); + v.setFreebie(av.getFreebie()); + v.setActivityUnitOriginalPrice(av.getActivityUnitOriginalPrice()); + v.setUnitOriginalPrice(av.getActivityUnitOriginalPrice()); + }); + vo.setActivityProductListVos(activityProductListVo); + return vo; + } + + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java index 604f938..382e805 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java @@ -1,7 +1,9 @@ package com.qniao.dam.application.service.order; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.qniao.dam.api.command.order.user.response.UserSubmitOrderVo; +import com.qniao.dam.domain.aggregate.activity.entity.ActivityProduct; import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.order.entity.OrderItem; import com.qniao.dam.domain.aggregate.paymentorder.entity.PaymentOrder; @@ -11,6 +13,7 @@ import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; import com.qniao.dam.domain.aggregate.productspec.repository.ProductSpecRepository; import com.qniao.dam.domain.service.order.SubmitOrderDomainService; import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum; +import com.qniao.dam.infrastructure.persistent.dao.activity.ActivityProductDao; import com.qniao.dam.infrastructure.utils.SnowFlakeUtil; import com.qniao.dam.query.order.OrderQueryService; import com.qniao.framework.exception.BizException; @@ -32,7 +35,8 @@ public class OrderApplicationService { private SnowFlakeUtil snowFlakeUtil; @Resource private OrderQueryService orderQueryService; - + @Resource + private ActivityProductDao activityProductDao; /** * todo 库存校验 暂时不用考虑 @@ -84,6 +88,12 @@ public class OrderApplicationService { orderItem.setProductTitle(product.getProductTitle()); orderItem.setProductDesc(product.getProductDesc()); orderItem.setUnitSettlementPrice(productSpec.getUnitSellingPrice()); + if(order.getGroupType() != null && order.getGroupType() == 1){ + ActivityProduct activityProduct = activityProductDao.selectOne(Wrappers.lambdaQuery(new ActivityProduct()) + .eq(ActivityProduct::getActivityId,order.getActivityId()) + .eq(ActivityProduct::getProductSpecId,orderItem.getProductSpecId())); + orderItem.setUnitSettlementPrice(activityProduct.getActivityUnitSellingPrice()); + } //1.1. 同类型权益,不同规格,限制购买和提醒 if (ProductTypeEnum.VIRTUAL.equals(product.getProductType())) { boolean diffFlag = orderQueryService.checkDiffSpecRight(order, orderItem, productSpec); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/activity/ActivityAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/activity/ActivityAggregate.java new file mode 100644 index 0000000..87dc878 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/activity/ActivityAggregate.java @@ -0,0 +1,18 @@ +package com.qniao.dam.domain.aggregate.activity; + +import com.qniao.dam.domain.aggregate.activity.entity.Activity; +import com.qniao.dam.domain.aggregate.activity.repository.ActivityRepository; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class ActivityAggregate { + + @Resource + private ActivityRepository activityRepository; + + public String saveActivity(Activity activity){ + return activityRepository.save(activity).toString(); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/activity/repository/ActivityRepository.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/activity/repository/ActivityRepository.java new file mode 100644 index 0000000..e971e66 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/activity/repository/ActivityRepository.java @@ -0,0 +1,7 @@ +package com.qniao.dam.domain.aggregate.activity.repository; + +import com.qniao.dam.domain.aggregate.activity.entity.Activity; +import com.qniao.domain.Repository; + +public interface ActivityRepository extends Repository { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/activity/ActivityDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/activity/ActivityDao.java new file mode 100644 index 0000000..cbfbb63 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/activity/ActivityDao.java @@ -0,0 +1,24 @@ +package com.qniao.dam.infrastructure.persistent.dao.activity; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.qniao.dam.api.query.activity.user.request.ActivityQueryDto; +import com.qniao.dam.api.query.activity.user.response.ActivityVo; +import com.qniao.dam.domain.aggregate.activity.entity.Activity; +import com.qniao.domain.QnPage; +import com.qniao.framework.utils.PageUtil; +import org.apache.ibatis.annotations.Param; + +/** + * 活动表 + * + * @date 2024/04/07 + */ +public interface ActivityDao extends BaseMapper { + + IPage pageActivityOperation(Page pageWithoutOrders, + @Param("dto") ActivityQueryDto dto, + @Param("userId") Long userId, + @Param("orgId") Long orgId); +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/activity/ActivityProductDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/activity/ActivityProductDao.java new file mode 100644 index 0000000..ef8544a --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/activity/ActivityProductDao.java @@ -0,0 +1,12 @@ +package com.qniao.dam.infrastructure.persistent.dao.activity; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qniao.dam.domain.aggregate.activity.entity.ActivityProduct; + +/** + * 活动产品表 + * + * @date 2024/04/07 + */ +public interface ActivityProductDao extends BaseMapper { +} 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 index f1d5a06..3d889fc 100644 --- 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 @@ -4,11 +4,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.qniao.dam.api.query.product.user.request.UserPageProductByCustomerQueryParam; import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam; +import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerExtendVo; import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerVo; import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + @Mapper public interface ProductViewDao { @@ -18,4 +21,8 @@ public interface ProductViewDao { IPage pageProductByCustomer(Page pageWithoutOrders, @Param("queryParam") UserPageProductByCustomerQueryParam queryParam); + + List selectProductByOperator(@Param("queryParam") UserPageProductByOperatorQueryParam queryParam); + + List selectProductByCustomerList(); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ActivityRepositoryImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ActivityRepositoryImpl.java new file mode 100644 index 0000000..cbc2588 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ActivityRepositoryImpl.java @@ -0,0 +1,53 @@ +package com.qniao.dam.infrastructure.persistent.repository.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.qniao.dam.domain.aggregate.activity.entity.Activity; +import com.qniao.dam.domain.aggregate.activity.entity.ActivityProduct; +import com.qniao.dam.domain.aggregate.activity.repository.ActivityRepository; +import com.qniao.dam.infrastructure.persistent.dao.activity.ActivityDao; +import com.qniao.dam.infrastructure.persistent.dao.activity.ActivityProductDao; +import com.qniao.framework.utils.SnowFlake; + +import javax.annotation.Resource; + +public class ActivityRepositoryImpl implements ActivityRepository { + + @Resource + private ActivityDao activityDao; + + @Resource + private ActivityProductDao activityProductDao; + + @Resource + private SnowFlake snowFlake; + + @Override + public Activity load(Long id) { + Activity activity = activityDao.selectById(id); + return activity; + } + + @Override + public Long save(Activity entity) { + if(entity.getId() != null){ + entity.setId(snowFlake.nextId()); + activityDao.insert(entity); + if(entity.getActivityProductList() != null){ + entity.getActivityProductList().forEach(e->{ + e.setActivityId(entity.getId()); + activityProductDao.insert(e); + }); + } + }else{ + activityDao.updateById(entity); + activityProductDao.delete(Wrappers.lambdaUpdate(new ActivityProduct()).eq(ActivityProduct::getActivityId,entity.getId())); + if(entity.getActivityProductList() != null){ + entity.getActivityProductList().forEach(e->{ + e.setActivityId(entity.getId()); + activityProductDao.insert(e); + }); + } + } + return entity.getId(); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java index aec4102..36a7da2 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.qniao.dam.api.query.product.user.request.UserPageProductByCustomerQueryParam; import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam; import com.qniao.dam.api.query.product.user.response.UserGetProductDetailByOperatorVo; +import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerGroupVo; import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerVo; import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo; import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm; @@ -20,4 +21,6 @@ public interface ProductQueryService { IPage pageProductByCustomer(PageUtil pageUtil, UserPageProductByCustomerQueryParam queryParam); ProductSpecTerm getTermByName(List productSpecTermList, ProductSpecTermNameEnum name); + + List getPageProductByCustomer(); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java index b60fe73..affe337 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java @@ -5,9 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.qniao.dam.api.query.product.user.request.UserPageProductByCustomerQueryParam; import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam; -import com.qniao.dam.api.query.product.user.response.UserGetProductDetailByOperatorVo; -import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerVo; -import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo; +import com.qniao.dam.api.query.product.user.response.*; import com.qniao.dam.domain.aggregate.product.entity.Product; import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm; @@ -23,8 +21,12 @@ import com.qniao.framework.utils.TypeConvertUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; @Service public class ProductQueryServiceImpl implements ProductQueryService { @@ -87,6 +89,27 @@ public class ProductQueryServiceImpl implements ProductQueryService { return productSpecTerm; } + @Override + public List getPageProductByCustomer() { + List groupVoList = new ArrayList<>(); + List extendVos = productViewDao.selectProductByCustomerList(); + Map> extMap = extendVos.stream().collect(Collectors.groupingBy(UserPageProductByCustomerExtendVo::getId)); + extMap.forEach((k,v)->{ + UserPageProductByCustomerExtendVo extendVo = v.get(0); + if(extendVo.getGroupType() == 0){ + extendVo.setProductName(extendVo.getProductTitle()); + } + BigDecimal unitOriginalPrice = v.stream().map(UserPageProductByCustomerExtendVo::getUnitOriginalPrice).reduce(BigDecimal.ZERO,BigDecimal::add); + BigDecimal unitSellingPrice = v.stream().map(UserPageProductByCustomerExtendVo::getUnitSellingPrice).reduce(BigDecimal.ZERO,BigDecimal::add); + UserPageProductByCustomerGroupVo vo = TypeConvertUtils.convert(extendVo,UserPageProductByCustomerGroupVo.class); + vo.setActivityId(extendVo.getId()); + vo.setUnitSellingPrice(unitSellingPrice); + vo.setUnitOriginalPrice(unitOriginalPrice); + vo.setProductList(TypeConvertUtils.convert(v,UserPageProductByCustomerVo.class)); + }); + return groupVoList; + } + /** * 找出对应name的value */ diff --git a/dating-agency-mall-server/src/main/resources/mapper/activity/ActivityMapper.xml b/dating-agency-mall-server/src/main/resources/mapper/activity/ActivityMapper.xml new file mode 100644 index 0000000..3d76730 --- /dev/null +++ b/dating-agency-mall-server/src/main/resources/mapper/activity/ActivityMapper.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/dating-agency-mall-server/src/main/resources/mapper/product/ProductViewMapper.xml b/dating-agency-mall-server/src/main/resources/mapper/product/ProductViewMapper.xml index 66a0cc7..d888d33 100644 --- a/dating-agency-mall-server/src/main/resources/mapper/product/ProductViewMapper.xml +++ b/dating-agency-mall-server/src/main/resources/mapper/product/ProductViewMapper.xml @@ -29,6 +29,12 @@ AND dp.sub_category = #{queryParam.subCategory} + + AND dp.id IN + + #{id} + + + +