From 6b110ee430cbc4e77b7bac2f896dabfc43f173dc Mon Sep 17 00:00:00 2001 From: Derran Date: Sat, 7 Dec 2024 14:03:25 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../odc/entity/OrderDiscountConfig.java | 36 ++++++++++++++++ ...erDiscountConfigUserCommandController.java | 43 +++++++++++++++++++ .../UserCreateOrderDiscountConfigDto.java | 33 ++++++++++++++ .../UserDeleteOrderDiscountConfigDto.java | 12 ++++++ .../UserEditOrderDiscountConfigDto.java | 39 +++++++++++++++++ .../UserEnableOrderDiscountConfigDto.java | 12 ++++++ ...OrderDiscountConfigApplicationService.java | 39 +++++++++++++++++ .../odc/OrderDiscountConfigAggregate.java | 31 +++++++++++++ .../OrderDiscountConfigRepository.java | 12 ++++++ .../dao/odc/OrderDiscountConfigDao.java | 12 ++++++ .../OrderDiscountConfigRepositoryImpl.java | 41 ++++++++++++++++++ .../odc/OrderDiscountConfigQueryService.java | 5 +++ .../OrderDiscountConfigQueryServiceImpl.java | 9 ++++ 13 files changed, 324 insertions(+) create mode 100644 dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/odc/entity/OrderDiscountConfig.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/OrderDiscountConfigUserCommandController.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserCreateOrderDiscountConfigDto.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserDeleteOrderDiscountConfigDto.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserEditOrderDiscountConfigDto.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserEnableOrderDiscountConfigDto.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/odc/OrderDiscountConfigApplicationService.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/odc/OrderDiscountConfigAggregate.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/odc/repository/OrderDiscountConfigRepository.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/odc/OrderDiscountConfigDao.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/OrderDiscountConfigRepositoryImpl.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/OrderDiscountConfigQueryService.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/impl/OrderDiscountConfigQueryServiceImpl.java diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/odc/entity/OrderDiscountConfig.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/odc/entity/OrderDiscountConfig.java new file mode 100644 index 0000000..c0c5382 --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/odc/entity/OrderDiscountConfig.java @@ -0,0 +1,36 @@ +package com.qniao.dam.domain.aggregate.odc.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.qniao.domain.Entity; +import java.math.BigDecimal; + +/** + * 订单优惠配置 + * + * @date 2024/12/07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_order_discount_config") +public class OrderDiscountConfig extends Entity { + + + @ApiModelProperty("手机号码") + private String phone; + + @ApiModelProperty("产品次分类") + private ProductSubCategoryEnum subCategory; + + @ApiModelProperty("折扣金额") + private BigDecimal discountAmount; + + @ApiModelProperty("启用") + private Boolean enable; + + @ApiModelProperty("备注") + private String remark; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/OrderDiscountConfigUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/OrderDiscountConfigUserCommandController.java new file mode 100644 index 0000000..1a87369 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/OrderDiscountConfigUserCommandController.java @@ -0,0 +1,43 @@ +package com.qniao.dam.api.command.odc.user; + +import com.qniao.dam.api.command.odc.user.request.*; +import com.qniao.dam.application.service.odc.OrderDiscountConfigApplicationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +@Api(tags = "订单优惠配置") +@RestController +@RequestMapping("user") +public class OrderDiscountConfigUserCommandController { + + @Resource + private OrderDiscountConfigApplicationService orderDiscountConfigApplicationService; + + @ApiOperation("用户创建订单优惠配置") + @PostMapping("create/order-discount-config") + public void userCreateOrderDiscountConfig(@RequestBody @Valid UserCreateOrderDiscountConfigDto dto) { + orderDiscountConfigApplicationService.create(dto.trans2Domain()); + } + + @ApiOperation("用户编辑订单优惠配置") + @PostMapping("edit/order-discount-config") + public void userEditOrderDiscountConfig(@RequestBody @Valid UserEditOrderDiscountConfigDto dto) { + orderDiscountConfigApplicationService.edit(dto.trans2Domain()); + } + + @ApiOperation("用户删除订单优惠配置") + @PostMapping("delete/order-discount-config") + public void userDeleteOrderDiscountConfig(@RequestBody @Valid UserDeleteOrderDiscountConfigDto dto) { + orderDiscountConfigApplicationService.delete(dto.getId()); + } + + @ApiOperation("用户启停订单优惠配置") + @PostMapping("enable/order-discount-config") + public void userEnableOrderDiscountConfig(@RequestBody @Valid UserEnableOrderDiscountConfigDto dto) { + orderDiscountConfigApplicationService.enable(dto.getId()); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserCreateOrderDiscountConfigDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserCreateOrderDiscountConfigDto.java new file mode 100644 index 0000000..f4413cd --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserCreateOrderDiscountConfigDto.java @@ -0,0 +1,33 @@ +package com.qniao.dam.api.command.odc.user.request; + +import com.qniao.dam.domain.aggregate.odc.entity.OrderDiscountConfig; +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; +import com.qniao.domain.Trans2DomainAssembler; +import io.swagger.annotations.ApiModelProperty; +import com.qniao.framework.utils.TypeConvertUtils; +import java.math.BigDecimal; +import lombok.Data; + +@Data +public class UserCreateOrderDiscountConfigDto implements Trans2DomainAssembler { + + @ApiModelProperty("手机号码") + private String phone; + + @ApiModelProperty("产品次分类") + private ProductSubCategoryEnum subCategory; + + @ApiModelProperty("折扣金额") + private BigDecimal discountAmount; + + @ApiModelProperty("启用") + private Boolean enable; + + @ApiModelProperty("备注") + private String remark; + + @Override + public OrderDiscountConfig trans2Domain() { + return TypeConvertUtils.convert(this, OrderDiscountConfig.class); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserDeleteOrderDiscountConfigDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserDeleteOrderDiscountConfigDto.java new file mode 100644 index 0000000..21d0b5d --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserDeleteOrderDiscountConfigDto.java @@ -0,0 +1,12 @@ +package com.qniao.dam.api.command.odc.user.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class UserDeleteOrderDiscountConfigDto { + + @ApiModelProperty("唯一标识") + private Long id; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserEditOrderDiscountConfigDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserEditOrderDiscountConfigDto.java new file mode 100644 index 0000000..d6e01d3 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserEditOrderDiscountConfigDto.java @@ -0,0 +1,39 @@ +package com.qniao.dam.api.command.odc.user.request; + +import com.qniao.dam.domain.aggregate.odc.entity.OrderDiscountConfig; +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; +import com.qniao.domain.Trans2DomainAssembler; +import io.swagger.annotations.ApiModelProperty; +import com.qniao.framework.utils.TypeConvertUtils; + +import java.math.BigDecimal; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class UserEditOrderDiscountConfigDto implements Trans2DomainAssembler { + + + @ApiModelProperty("唯一标识") + @NotNull(message = "唯一标识不能为空") + private Long id; + + @ApiModelProperty("手机号码") + private String phone; + + @ApiModelProperty("产品次分类") + private ProductSubCategoryEnum subCategory; + + @ApiModelProperty("折扣金额") + private BigDecimal discountAmount; + + @ApiModelProperty("备注") + private String remark; + + @Override + public OrderDiscountConfig trans2Domain() { + return TypeConvertUtils.convert(this, OrderDiscountConfig.class); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserEnableOrderDiscountConfigDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserEnableOrderDiscountConfigDto.java new file mode 100644 index 0000000..8933935 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserEnableOrderDiscountConfigDto.java @@ -0,0 +1,12 @@ +package com.qniao.dam.api.command.odc.user.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class UserEnableOrderDiscountConfigDto { + + @ApiModelProperty("唯一标识") + private Long id; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/odc/OrderDiscountConfigApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/odc/OrderDiscountConfigApplicationService.java new file mode 100644 index 0000000..0539e0c --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/odc/OrderDiscountConfigApplicationService.java @@ -0,0 +1,39 @@ +package com.qniao.dam.application.service.odc; + +import com.qniao.dam.domain.aggregate.odc.OrderDiscountConfigAggregate; +import com.qniao.dam.domain.aggregate.odc.entity.OrderDiscountConfig; +import com.qniao.dam.domain.aggregate.odc.repository.OrderDiscountConfigRepository; +import com.qniao.dam.infrastructure.persistent.dao.odc.OrderDiscountConfigDao; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Objects; + +@Service +public class OrderDiscountConfigApplicationService { + + @Resource + private OrderDiscountConfigAggregate orderDiscountConfigAggregate; + @Resource + private OrderDiscountConfigRepository orderDiscountConfigRepository; + + public void create(OrderDiscountConfig orderDiscountConfig) { + orderDiscountConfigAggregate.create(orderDiscountConfig); + } + + public void edit(OrderDiscountConfig orderDiscountConfig) { + orderDiscountConfigAggregate.edit(orderDiscountConfig); + } + + public void delete(Long id) { + orderDiscountConfigAggregate.delete(id); + } + + public void enable(Long id) { + OrderDiscountConfig orderDiscountConfig = orderDiscountConfigRepository.load(id); + if (Objects.nonNull(orderDiscountConfig)) { + orderDiscountConfig.setEnable(!orderDiscountConfig.getEnable()); + orderDiscountConfigRepository.save(orderDiscountConfig); + } + } +} \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/odc/OrderDiscountConfigAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/odc/OrderDiscountConfigAggregate.java new file mode 100644 index 0000000..55cce3b --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/odc/OrderDiscountConfigAggregate.java @@ -0,0 +1,31 @@ +package com.qniao.dam.domain.aggregate.odc; + +import com.qniao.dam.domain.aggregate.odc.entity.OrderDiscountConfig; +import com.qniao.dam.domain.aggregate.odc.repository.OrderDiscountConfigRepository; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 订单优惠配置 + * + * @date 2024/12/07 + */ +@Service +public class OrderDiscountConfigAggregate { + + @Resource + private OrderDiscountConfigRepository repository; + + public void create(OrderDiscountConfig entity) { + repository.save(entity); + } + + public void edit(OrderDiscountConfig entity) { + repository.save(entity); + } + + public void delete(Long id) { + repository.delete(id); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/odc/repository/OrderDiscountConfigRepository.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/odc/repository/OrderDiscountConfigRepository.java new file mode 100644 index 0000000..5fd71e5 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/odc/repository/OrderDiscountConfigRepository.java @@ -0,0 +1,12 @@ +package com.qniao.dam.domain.aggregate.odc.repository; + +import com.qniao.dam.domain.aggregate.odc.entity.OrderDiscountConfig; +import com.qniao.domain.Repository; + +/** + * 订单优惠配置 + * + * @date 2024/12/07 + */ +public interface OrderDiscountConfigRepository extends Repository { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/odc/OrderDiscountConfigDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/odc/OrderDiscountConfigDao.java new file mode 100644 index 0000000..80a1807 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/odc/OrderDiscountConfigDao.java @@ -0,0 +1,12 @@ +package com.qniao.dam.infrastructure.persistent.dao.odc; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qniao.dam.domain.aggregate.odc.entity.OrderDiscountConfig; + +/** + * 订单优惠配置 + * + * @date 2024/12/07 + */ +public interface OrderDiscountConfigDao extends BaseMapper { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/OrderDiscountConfigRepositoryImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/OrderDiscountConfigRepositoryImpl.java new file mode 100644 index 0000000..5606fdd --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/OrderDiscountConfigRepositoryImpl.java @@ -0,0 +1,41 @@ +package com.qniao.dam.infrastructure.persistent.repository.impl; + +import com.qniao.dam.domain.aggregate.odc.entity.OrderDiscountConfig; +import com.qniao.dam.domain.aggregate.odc.repository.OrderDiscountConfigRepository; +import com.qniao.dam.infrastructure.persistent.dao.odc.OrderDiscountConfigDao; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Objects; + +/** + * 订单优惠配置 + * + * @date 2024/12/07 + */ +@Service +public class OrderDiscountConfigRepositoryImpl implements OrderDiscountConfigRepository { + + @Resource + private OrderDiscountConfigDao dao; + + @Override + public OrderDiscountConfig load(Long id) { + return dao.selectById(id); + } + + @Override + public Long save(OrderDiscountConfig entity) { + if (Objects.isNull(entity) || Objects.isNull(dao.selectById(entity.getId()))) { + dao.insert(entity); + } else { + dao.updateById(entity); + } + return entity.getId(); + } + + @Override + public void delete(Long id) { + dao.deleteById(id); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/OrderDiscountConfigQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/OrderDiscountConfigQueryService.java new file mode 100644 index 0000000..1f58ed8 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/OrderDiscountConfigQueryService.java @@ -0,0 +1,5 @@ +package com.qniao.dam.query.odc; + +public interface OrderDiscountConfigQueryService { + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/impl/OrderDiscountConfigQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/impl/OrderDiscountConfigQueryServiceImpl.java new file mode 100644 index 0000000..402114d --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/impl/OrderDiscountConfigQueryServiceImpl.java @@ -0,0 +1,9 @@ +package com.qniao.dam.query.odc.impl; + +import com.qniao.dam.query.odc.OrderDiscountConfigQueryService; +import org.springframework.stereotype.Service; + +@Service +public class OrderDiscountConfigQueryServiceImpl implements OrderDiscountConfigQueryService { + +} \ No newline at end of file From 778cbe3ee966ac7884bd14f125d5b614c03b2922 Mon Sep 17 00:00:00 2001 From: Derran Date: Sat, 7 Dec 2024 15:10:07 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rderDiscountConfigUserQueryController.java | 31 +++++++++++++++ ...serPageOrderDiscountConfigQueryParams.java | 19 ++++++++++ .../UserPageOrderDiscountConfigVo.java | 38 +++++++++++++++++++ .../dao/odc/OrderDiscountConfigDao.java | 9 +++++ .../odc/OrderDiscountConfigQueryService.java | 6 +++ .../OrderDiscountConfigQueryServiceImpl.java | 15 ++++++++ .../mapper/odc/OrderDiscountConfigMapper.xml | 28 ++++++++++++++ 7 files changed, 146 insertions(+) create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/OrderDiscountConfigUserQueryController.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/request/UserPageOrderDiscountConfigQueryParams.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/response/UserPageOrderDiscountConfigVo.java create mode 100644 dating-agency-mall-server/src/main/resources/mapper/odc/OrderDiscountConfigMapper.xml diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/OrderDiscountConfigUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/OrderDiscountConfigUserQueryController.java new file mode 100644 index 0000000..b70e760 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/OrderDiscountConfigUserQueryController.java @@ -0,0 +1,31 @@ +package com.qniao.dam.api.query.odc.user; + +import com.qniao.dam.api.query.odc.user.request.UserPageOrderDiscountConfigQueryParams; +import com.qniao.dam.api.query.odc.user.response.UserPageOrderDiscountConfigVo; +import com.qniao.dam.query.odc.OrderDiscountConfigQueryService; +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.GetMapping; +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 OrderDiscountConfigUserQueryController { + + @Resource + private OrderDiscountConfigQueryService orderDiscountConfigQueryService; + + @GetMapping("page/order-discount-config") + @ApiOperation("用户查询订单优惠配置分页") + public QnPage userPageOrderDiscountConfig(PageUtil pageUtil, + UserPageOrderDiscountConfigQueryParams queryParams) { + return PageUtil.convert(orderDiscountConfigQueryService.pageOrderDiscountConfig(queryParams, pageUtil), UserPageOrderDiscountConfigVo.class); + } + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/request/UserPageOrderDiscountConfigQueryParams.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/request/UserPageOrderDiscountConfigQueryParams.java new file mode 100644 index 0000000..26abb06 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/request/UserPageOrderDiscountConfigQueryParams.java @@ -0,0 +1,19 @@ +package com.qniao.dam.api.query.odc.user.request; + +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class UserPageOrderDiscountConfigQueryParams { + + @ApiModelProperty("手机号码") + private String phone; + + @ApiModelProperty("产品次分类") + private ProductSubCategoryEnum subCategory; + + @ApiModelProperty("启用") + private Boolean enable; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/response/UserPageOrderDiscountConfigVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/response/UserPageOrderDiscountConfigVo.java new file mode 100644 index 0000000..5f30b5d --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/response/UserPageOrderDiscountConfigVo.java @@ -0,0 +1,38 @@ +package com.qniao.dam.api.query.odc.user.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class UserPageOrderDiscountConfigVo { + + @ApiModelProperty("唯一标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @ApiModelProperty("手机号码") + private String phone; + + @ApiModelProperty("产品次分类") + private ProductSubCategoryEnum subCategory; + + @ApiModelProperty("折扣金额") + private BigDecimal discountAmount; + + @ApiModelProperty("启用") + private Boolean enable; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/odc/OrderDiscountConfigDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/odc/OrderDiscountConfigDao.java index 80a1807..03a2327 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/odc/OrderDiscountConfigDao.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/odc/OrderDiscountConfigDao.java @@ -1,7 +1,12 @@ package com.qniao.dam.infrastructure.persistent.dao.odc; 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.odc.user.request.UserPageOrderDiscountConfigQueryParams; +import com.qniao.dam.api.query.odc.user.response.UserPageOrderDiscountConfigVo; import com.qniao.dam.domain.aggregate.odc.entity.OrderDiscountConfig; +import org.apache.ibatis.annotations.Param; /** * 订单优惠配置 @@ -9,4 +14,8 @@ import com.qniao.dam.domain.aggregate.odc.entity.OrderDiscountConfig; * @date 2024/12/07 */ public interface OrderDiscountConfigDao extends BaseMapper { + + IPage page(Page pageWithoutOrders, + @Param("queryParams") UserPageOrderDiscountConfigQueryParams queryParams); + } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/OrderDiscountConfigQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/OrderDiscountConfigQueryService.java index 1f58ed8..14ff2e0 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/OrderDiscountConfigQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/OrderDiscountConfigQueryService.java @@ -1,5 +1,11 @@ package com.qniao.dam.query.odc; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.qniao.dam.api.query.odc.user.request.UserPageOrderDiscountConfigQueryParams; +import com.qniao.dam.api.query.odc.user.response.UserPageOrderDiscountConfigVo; +import com.qniao.framework.utils.PageUtil; + public interface OrderDiscountConfigQueryService { + IPage pageOrderDiscountConfig(UserPageOrderDiscountConfigQueryParams queryParams, PageUtil pageUtil); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/impl/OrderDiscountConfigQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/impl/OrderDiscountConfigQueryServiceImpl.java index 402114d..b2bcff2 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/impl/OrderDiscountConfigQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/impl/OrderDiscountConfigQueryServiceImpl.java @@ -1,9 +1,24 @@ package com.qniao.dam.query.odc.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.qniao.dam.api.query.odc.user.request.UserPageOrderDiscountConfigQueryParams; +import com.qniao.dam.api.query.odc.user.response.UserPageOrderDiscountConfigVo; +import com.qniao.dam.infrastructure.persistent.dao.odc.OrderDiscountConfigDao; import com.qniao.dam.query.odc.OrderDiscountConfigQueryService; +import com.qniao.framework.utils.PageUtil; import org.springframework.stereotype.Service; +import javax.annotation.Resource; + @Service public class OrderDiscountConfigQueryServiceImpl implements OrderDiscountConfigQueryService { + @Resource + private OrderDiscountConfigDao orderDiscountConfigDao; + + @Override + public IPage pageOrderDiscountConfig(UserPageOrderDiscountConfigQueryParams queryParams, + PageUtil pageUtil) { + return orderDiscountConfigDao.page(pageUtil.toPageWithoutOrders(), queryParams); + } } \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/resources/mapper/odc/OrderDiscountConfigMapper.xml b/dating-agency-mall-server/src/main/resources/mapper/odc/OrderDiscountConfigMapper.xml new file mode 100644 index 0000000..97c7d78 --- /dev/null +++ b/dating-agency-mall-server/src/main/resources/mapper/odc/OrderDiscountConfigMapper.xml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file From 8f24cead6e6f0644d50d9b34d9a21e6573d0b40f Mon Sep 17 00:00:00 2001 From: Derran Date: Sat, 7 Dec 2024 16:24:09 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/aggregate/order/entity/Order.java | 16 ++++++++++- .../aggregate/order/entity/OrderItem.java | 17 +++++++++++ .../order/OrderApplicationService.java | 28 ++++++++----------- .../odc/OrderDiscountConfigQueryService.java | 5 ++++ .../OrderDiscountConfigQueryServiceImpl.java | 28 +++++++++++++++++++ 5 files changed, 77 insertions(+), 17 deletions(-) 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 6b9714a..83906a2 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 @@ -1,5 +1,6 @@ package com.qniao.dam.domain.aggregate.order.entity; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.annotation.TableName; import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; import com.qniao.dam.domian.aggregate.order.constant.OrderStatusEnum; @@ -13,6 +14,7 @@ import lombok.EqualsAndHashCode; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; +import java.util.Objects; @Data @EqualsAndHashCode(callSuper = true) @@ -38,7 +40,10 @@ public class Order extends Entity { private String orderCode; @ApiModelProperty("原始金额") - private BigDecimal originalAmount ; + private BigDecimal originalAmount; + + @ApiModelProperty("平台折扣金额") + private BigDecimal platformDiscountAmount; @ApiModelProperty("折扣金额") private BigDecimal discountAmount; @@ -79,4 +84,13 @@ public class Order extends Entity { order.setOrderType(orderType); return order; } + + public void calculate() { + if (CollUtil.isNotEmpty(orderItemList)) { + originalAmount = orderItemList.stream().map(OrderItem::getOriginalAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + platformDiscountAmount = orderItemList.stream().map(OrderItem::getPlatformDiscountAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + discountAmount = orderItemList.stream().map(OrderItem::getDiscountAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + settlementAmount = orderItemList.stream().map(OrderItem::getSettlementAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + } + } } diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/OrderItem.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/OrderItem.java index 8e702ce..890c4df 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/OrderItem.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/OrderItem.java @@ -10,6 +10,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.math.BigDecimal; +import java.util.Objects; @Data @EqualsAndHashCode(callSuper = true) @@ -52,6 +53,9 @@ public class OrderItem extends Entity { @ApiModelProperty("原始金额") private BigDecimal originalAmount; + @ApiModelProperty("平台折扣金额") + private BigDecimal platformDiscountAmount; + @ApiModelProperty("折扣金额") private BigDecimal discountAmount; @@ -79,4 +83,17 @@ public class OrderItem extends Entity { orderItem.setQuantity(quantity); return orderItem; } + + public void calculate() { + if (Objects.isNull(originalAmount)) { + originalAmount = BigDecimal.ZERO; + } + if (Objects.isNull(platformDiscountAmount)) { + platformDiscountAmount = BigDecimal.ZERO; + } + if (Objects.isNull(discountAmount)) { + discountAmount = BigDecimal.ZERO; + } + settlementAmount = originalAmount.subtract(platformDiscountAmount).subtract(discountAmount); + } } 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 627b189..3b87a03 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 @@ -41,6 +41,7 @@ import com.qniao.dam.infrastructure.utils.SnowFlakeUtil; import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; import com.qniao.dam.query.matchmaker.MatchmakerQueryService; import com.qniao.dam.query.matchmakermarriage.MatchmakerMarriageInformationQueryService; +import com.qniao.dam.query.odc.OrderDiscountConfigQueryService; import com.qniao.dam.query.order.OrderQueryService; import com.qniao.dam.query.product.ProductQueryService; import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; @@ -111,6 +112,8 @@ public class OrderApplicationService extends BaseApplicationService { private OrderDao orderDao; @Resource private OrderAggregate orderAggregate; + @Resource + private OrderDiscountConfigQueryService orderDiscountConfigQueryService; @Value("${default_marriage_bounty_matchmaker_id}") private Long defaultMarriageBountyMatchmakerId; @@ -502,24 +505,21 @@ public class OrderApplicationService extends BaseApplicationService { private void countMatchMakerOrderAmount(Order order, MatchmakerOrderTypeEnum matchmakerOrderType) { if (CollUtil.isNotEmpty(order.getOrderItemList())) { - BigDecimal totalOriginalAmount = BigDecimal.ZERO; - BigDecimal totalDiscountAmount = BigDecimal.ZERO; - BigDecimal totalSettlementAmount = BigDecimal.ZERO; for (OrderItem orderItem : order.getOrderItemList()) { + //查询订单折扣配置 + orderItem.setPlatformDiscountAmount(orderDiscountConfigQueryService.queryBy(order.getUserId(), orderItem.getSubCategory())); if (MatchmakerOrderTypeEnum.JOIN.equals(matchmakerOrderType)) { - orderItem.setOriginalAmount(orderItem.getUnitOriginalPrice().multiply(BigDecimal.valueOf(orderItem.getQuantity()))); + orderItem.setOriginalAmount(orderItem.getUnitOriginalPrice()); orderItem.setDiscountAmount(BigDecimal.ZERO); - orderItem.setSettlementAmount(orderItem.getOriginalAmount()); - totalOriginalAmount = totalOriginalAmount.add(orderItem.getOriginalAmount()); - totalSettlementAmount = totalSettlementAmount.add(orderItem.getSettlementAmount()); - totalDiscountAmount = totalDiscountAmount.add(orderItem.getDiscountAmount()); + orderItem.calculate(); + orderItem.setUnitOriginalPrice(orderItem.getSettlementAmount()); } else if (MatchmakerOrderTypeEnum.UPGRADE.equals(matchmakerOrderType)) { //红娘升级 Matchmaker matchmaker = matchmakerQueryService.queryByUserId(order.getUserId()); if (Objects.isNull(matchmaker)) { throw new BizException("没有查询到红娘信息"); } else { - orderItem.setOriginalAmount(orderItem.getUnitOriginalPrice().multiply(BigDecimal.valueOf(orderItem.getQuantity()))); + orderItem.setOriginalAmount(orderItem.getUnitOriginalPrice()); BigDecimal discountAmount = BigDecimal.ZERO; //红娘升级补差价周期 RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_UPGRADE_PROTECTION_PERIOD); @@ -530,16 +530,12 @@ public class OrderApplicationService extends BaseApplicationService { } } orderItem.setDiscountAmount(discountAmount); - orderItem.setSettlementAmount(orderItem.getOriginalAmount().subtract(discountAmount)); - totalOriginalAmount = totalOriginalAmount.add(orderItem.getOriginalAmount()); - totalSettlementAmount = totalSettlementAmount.add(orderItem.getSettlementAmount()); - totalDiscountAmount = totalDiscountAmount.add(orderItem.getDiscountAmount()); + orderItem.calculate(); + orderItem.setUnitOriginalPrice(orderItem.getSettlementAmount()); } } } - order.setOriginalAmount(totalOriginalAmount); - order.setDiscountAmount(totalDiscountAmount); - order.setSettlementAmount(totalSettlementAmount); + order.calculate(); if (order.getSettlementAmount().compareTo(BigDecimal.ZERO) <= 0) { throw new BizException("订单金额应该大于0"); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/OrderDiscountConfigQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/OrderDiscountConfigQueryService.java index 14ff2e0..62afb7b 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/OrderDiscountConfigQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/OrderDiscountConfigQueryService.java @@ -3,9 +3,14 @@ package com.qniao.dam.query.odc; import com.baomidou.mybatisplus.core.metadata.IPage; import com.qniao.dam.api.query.odc.user.request.UserPageOrderDiscountConfigQueryParams; import com.qniao.dam.api.query.odc.user.response.UserPageOrderDiscountConfigVo; +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.framework.utils.PageUtil; +import java.math.BigDecimal; + public interface OrderDiscountConfigQueryService { IPage pageOrderDiscountConfig(UserPageOrderDiscountConfigQueryParams queryParams, PageUtil pageUtil); + + BigDecimal queryBy(Long userId, ProductSubCategoryEnum subCategory); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/impl/OrderDiscountConfigQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/impl/OrderDiscountConfigQueryServiceImpl.java index b2bcff2..74ee72f 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/impl/OrderDiscountConfigQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/impl/OrderDiscountConfigQueryServiceImpl.java @@ -1,24 +1,52 @@ package com.qniao.dam.query.odc.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.qniao.dam.api.query.odc.user.request.UserPageOrderDiscountConfigQueryParams; import com.qniao.dam.api.query.odc.user.response.UserPageOrderDiscountConfigVo; +import com.qniao.dam.domain.aggregate.odc.entity.OrderDiscountConfig; +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.dam.infrastructure.persistent.dao.odc.OrderDiscountConfigDao; +import com.qniao.dam.query.account.AccountQueryService; import com.qniao.dam.query.odc.OrderDiscountConfigQueryService; +import com.qniao.dau.domain.aggregate.account.entity.Account; +import com.qniao.dau.domian.aggregate.account.constant.AccountTypeEnum; import com.qniao.framework.utils.PageUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.Objects; @Service public class OrderDiscountConfigQueryServiceImpl implements OrderDiscountConfigQueryService { @Resource private OrderDiscountConfigDao orderDiscountConfigDao; + @Resource + private AccountQueryService accountQueryService; @Override public IPage pageOrderDiscountConfig(UserPageOrderDiscountConfigQueryParams queryParams, PageUtil pageUtil) { return orderDiscountConfigDao.page(pageUtil.toPageWithoutOrders(), queryParams); } + + @Override + public BigDecimal queryBy(Long userId, ProductSubCategoryEnum subCategory) { + BigDecimal discountAmount = BigDecimal.ZERO; + Account phoneAccount = accountQueryService.queryByUserIdAndType(userId, AccountTypeEnum.MOBILE); + if (Objects.nonNull(phoneAccount)) { + OrderDiscountConfig orderDiscountConfig = orderDiscountConfigDao.selectOne(new LambdaQueryWrapper() + .eq(OrderDiscountConfig::getPhone, phoneAccount.getTid()) + .eq(OrderDiscountConfig::getSubCategory, subCategory) + .eq(OrderDiscountConfig::getEnable, true) + .orderByDesc(OrderDiscountConfig::getCreateTime) + .last("limit 1")); + if (Objects.nonNull(orderDiscountConfig)) { + discountAmount = orderDiscountConfig.getDiscountAmount(); + } + } + return discountAmount; + } } \ No newline at end of file From f433c471d762a32200d5f950449c76ce3f407c5c Mon Sep 17 00:00:00 2001 From: Derran Date: Mon, 9 Dec 2024 17:43:20 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/order/OrderApplicationService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 3b87a03..4f0e959 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 @@ -427,13 +427,13 @@ public class OrderApplicationService extends BaseApplicationService { // fillOrderInfo(order); // } else { //是否vip - boolean vip = rightQueryService.checkUserVipRight(userId, dto.getMiId()).getVip(); + //boolean vip = rightQueryService.checkUserVipRight(userId, dto.getMiId()).getVip(); //报名参加活动 order = Order.build(userId, dto.getMiId(), OrderBelongingEnum.CUSTOMER, marriageInformation.getNickName(), OrderTypeEnum.NORMAL); ProductSpec productSpec = product.getProductSpecList().get(0); //todo feign 获取活动应付金额 CalculateSiteActivityFeeDto calculateDto = new CalculateSiteActivityFeeDto(dto.getSiteActivityId(), userId, - dto.getMiId(), vip ? VIPEnum.YES.getValue() : VIPEnum.NO.getValue()); + dto.getMiId()); CalculateSiteActivityFeeVo calculateVo = datingAgencyServiceApplicationService.calculateSiteActivityFeeBySdk(calculateDto); if (!calculateVo.getEnable()) { throw new BizException("下单异常"); @@ -455,9 +455,9 @@ public class OrderApplicationService extends BaseApplicationService { public UserCalculateOrderFeeVo calculateSiteActivityOrderFee(UserCalculateSiteActivityOrderDto dto, Long userId) { //是否vip - boolean vip = rightQueryService.checkUserVipRight(userId, dto.getMiId()).getVip(); + //boolean vip = rightQueryService.checkUserVipRight(userId, dto.getMiId()).getVip(); CalculateSiteActivityFeeDto calculateDto = new CalculateSiteActivityFeeDto(dto.getSiteActivityId(), userId, - dto.getMiId(), vip ? VIPEnum.YES.getValue() : VIPEnum.NO.getValue()); + dto.getMiId()); CalculateSiteActivityFeeVo calculateVo = datingAgencyServiceApplicationService.calculateSiteActivityFeeBySdk(calculateDto); if (!calculateVo.getEnable()) { throw new BizException("下单异常");