Browse Source

Merge branch 'release'

release
张彭杰 1 year ago
parent
commit
48efd259f6
20 changed files with 551 additions and 21 deletions
  1. 36
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/odc/entity/OrderDiscountConfig.java
  2. 16
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java
  3. 17
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/OrderItem.java
  4. 43
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/OrderDiscountConfigUserCommandController.java
  5. 33
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserCreateOrderDiscountConfigDto.java
  6. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserDeleteOrderDiscountConfigDto.java
  7. 39
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserEditOrderDiscountConfigDto.java
  8. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/odc/user/request/UserEnableOrderDiscountConfigDto.java
  9. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/OrderDiscountConfigUserQueryController.java
  10. 19
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/request/UserPageOrderDiscountConfigQueryParams.java
  11. 38
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/odc/user/response/UserPageOrderDiscountConfigVo.java
  12. 39
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/odc/OrderDiscountConfigApplicationService.java
  13. 36
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java
  14. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/odc/OrderDiscountConfigAggregate.java
  15. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/odc/repository/OrderDiscountConfigRepository.java
  16. 21
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/odc/OrderDiscountConfigDao.java
  17. 41
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/OrderDiscountConfigRepositoryImpl.java
  18. 16
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/OrderDiscountConfigQueryService.java
  19. 52
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/impl/OrderDiscountConfigQueryServiceImpl.java
  20. 28
      dating-agency-mall-server/src/main/resources/mapper/odc/OrderDiscountConfigMapper.xml

36
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<OrderDiscountConfig> {
@ApiModelProperty("手机号码")
private String phone;
@ApiModelProperty("产品次分类")
private ProductSubCategoryEnum subCategory;
@ApiModelProperty("折扣金额")
private BigDecimal discountAmount;
@ApiModelProperty("启用")
private Boolean enable;
@ApiModelProperty("备注")
private String remark;
}

16
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<Order> {
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> {
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);
}
}
}

17
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<OrderItem> {
@ApiModelProperty("原始金额")
private BigDecimal originalAmount;
@ApiModelProperty("平台折扣金额")
private BigDecimal platformDiscountAmount;
@ApiModelProperty("折扣金额")
private BigDecimal discountAmount;
@ -79,4 +83,17 @@ public class OrderItem extends Entity<OrderItem> {
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);
}
}

43
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());
}
}

33
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<OrderDiscountConfig> {
@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);
}
}

12
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;
}

39
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<OrderDiscountConfig> {
@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);
}
}

12
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;
}

31
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<UserPageOrderDiscountConfigVo> userPageOrderDiscountConfig(PageUtil pageUtil,
UserPageOrderDiscountConfigQueryParams queryParams) {
return PageUtil.convert(orderDiscountConfigQueryService.pageOrderDiscountConfig(queryParams, pageUtil), UserPageOrderDiscountConfigVo.class);
}
}

19
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;
}

38
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;
}

39
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);
}
}
}

36
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;
@ -424,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("下单异常");
@ -452,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("下单异常");
@ -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");
}

31
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);
}
}

12
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<OrderDiscountConfig, Long> {
}

21
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/odc/OrderDiscountConfigDao.java

@ -0,0 +1,21 @@
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;
/**
* 订单优惠配置
*
* @date 2024/12/07
*/
public interface OrderDiscountConfigDao extends BaseMapper<OrderDiscountConfig> {
IPage<UserPageOrderDiscountConfigVo> page(Page<Object> pageWithoutOrders,
@Param("queryParams") UserPageOrderDiscountConfigQueryParams queryParams);
}

41
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);
}
}

16
dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/OrderDiscountConfigQueryService.java

@ -0,0 +1,16 @@
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<UserPageOrderDiscountConfigVo> pageOrderDiscountConfig(UserPageOrderDiscountConfigQueryParams queryParams, PageUtil pageUtil);
BigDecimal queryBy(Long userId, ProductSubCategoryEnum subCategory);
}

52
dating-agency-mall-server/src/main/java/com/qniao/dam/query/odc/impl/OrderDiscountConfigQueryServiceImpl.java

@ -0,0 +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<UserPageOrderDiscountConfigVo> 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<OrderDiscountConfig>()
.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;
}
}

28
dating-agency-mall-server/src/main/resources/mapper/odc/OrderDiscountConfigMapper.xml

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qniao.dam.infrastructure.persistent.dao.odc.OrderDiscountConfigDao">
<select id="page" resultType="com.qniao.dam.api.query.odc.user.response.UserPageOrderDiscountConfigVo">
SELECT
daodc.id,
daodc.phone,
daodc.sub_category,
daodc.discount_amount,
daodc.`enable`,
daodc.remark,
daodc.create_time
from da_order_discount_config as daodc
where daodc.is_delete=0
<if test="queryParams.enable != null">
and daodc.`enable` = #{queryParams.enable}
</if>
<if test="queryParams.subCategory != null">
and daodc.sub_category = #{queryParams.subCategory}
</if>
<if test="queryParams.phone != null and queryParams.phone != '' ">
AND daodc.phone LIKE CONCAT('%', TRIM(#{queryParams.phone}), '%')
</if>
ORDER BY daodc.create_time desc
</select>
</mapper>
Loading…
Cancel
Save