From 04a45099a996eee4d389a1e6e93ed7813fe511ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 16 Oct 2025 16:46:03 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E6=97=A5=E6=9C=89=E7=A4=BC=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/shopuser/ShopUserMoneyEditDTO.java | 1 + .../entity/MkConsumeCashbackRecord.java | 2 + .../service/MkConsumeCashbackService.java | 12 +++++ .../com/czg/constant/TableValueConstant.java | 15 ++++++ .../com/czg/enums/ShopUserFlowBizEnum.java | 1 + .../impl/MkConsumeCashbackServiceImpl.java | 54 +++++++++++++++++-- 6 files changed, 81 insertions(+), 4 deletions(-) diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopuser/ShopUserMoneyEditDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopuser/ShopUserMoneyEditDTO.java index 0ddcf985..2e02ea0a 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopuser/ShopUserMoneyEditDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopuser/ShopUserMoneyEditDTO.java @@ -30,6 +30,7 @@ public class ShopUserMoneyEditDTO implements Serializable { * 关联id, * 订单支付/订单退款/霸王餐时 订单id * 支付/退款 tb_order_payment.id + * 消费返现为返现记录id */ private Long relationId; /** diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkConsumeCashbackRecord.java b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkConsumeCashbackRecord.java index b136eef7..b0c5d950 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkConsumeCashbackRecord.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkConsumeCashbackRecord.java @@ -14,6 +14,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; /** * 消费返现明细 实体类。 @@ -26,6 +27,7 @@ import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor @Table("mk_consume_cashback_record") +@Accessors(chain = true) public class MkConsumeCashbackRecord implements Serializable { @Serial diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkConsumeCashbackService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkConsumeCashbackService.java index 721c094c..bcf9fd46 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkConsumeCashbackService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkConsumeCashbackService.java @@ -7,6 +7,8 @@ import com.czg.market.vo.MkConsumeCashbackVO; import com.mybatisflex.core.service.IService; import com.czg.market.entity.MkConsumeCashback; +import java.math.BigDecimal; + /** * 服务层。 * @@ -17,4 +19,14 @@ public interface MkConsumeCashbackService extends IService { MkConsumeCashbackVO detail(Long shopId); Boolean edit(Long shopId, MkConsumeCashbackDTO consumeDiscountDTO) throws ApiNotPrintException; + + /** + * 消费返现 + * @param shopId 店铺id + * @param userId 用户id + * @param amount 金额 + * @param orderId 订单id + * @param orderNo 订单号 + */ + void cashback(Long shopId, Long userId, BigDecimal amount, Long orderId, String orderNo); } diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/constant/TableValueConstant.java b/cash-common/cash-common-tools/src/main/java/com/czg/constant/TableValueConstant.java index 385440e8..c769b7f8 100644 --- a/cash-common/cash-common-tools/src/main/java/com/czg/constant/TableValueConstant.java +++ b/cash-common/cash-common-tools/src/main/java/com/czg/constant/TableValueConstant.java @@ -70,4 +70,19 @@ public interface TableValueConstant { } } } + + interface MkConsumeCashback { + @Getter + enum CashbackType { + FIX("fix", "待推送"), + PERCENTAGE("percentage", "推送成功"); + private final String code; + private final String msg; + + CashbackType(String code, String msg) { + this.code = code; + this.msg = msg; + } + } + } } diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/enums/ShopUserFlowBizEnum.java b/cash-common/cash-common-tools/src/main/java/com/czg/enums/ShopUserFlowBizEnum.java index c5f27a75..151c77c7 100644 --- a/cash-common/cash-common-tools/src/main/java/com/czg/enums/ShopUserFlowBizEnum.java +++ b/cash-common/cash-common-tools/src/main/java/com/czg/enums/ShopUserFlowBizEnum.java @@ -10,6 +10,7 @@ import lombok.Getter; public enum ShopUserFlowBizEnum { // 会员充值 CASH_IN("cashIn", "会员充值"), + CASHBACK("cashback", "消费返现"), FREE_IN("freeIn", "霸王餐充值"), // 重置奖励 AWARD_IN("awardIn", "充值奖励"), diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java index d2919bed..5fbca5b7 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java @@ -3,26 +3,34 @@ package com.czg.service.market.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSONArray; +import com.czg.account.dto.shopuser.ShopUserMoneyEditDTO; import com.czg.account.entity.ShopInfo; +import com.czg.account.entity.ShopUser; import com.czg.account.service.ShopInfoService; +import com.czg.account.service.ShopUserService; import com.czg.constant.TableValueConstant; +import com.czg.enums.ShopUserFlowBizEnum; import com.czg.exception.ApiNotPrintException; import com.czg.market.dto.MkConsumeCashbackDTO; import com.czg.market.dto.MkConsumeDiscountDTO; -import com.czg.market.entity.MkConsumeCashbackStep; -import com.czg.market.entity.MkConsumeDiscount; -import com.czg.market.entity.MkConsumeDiscountRandom; +import com.czg.market.entity.*; +import com.czg.market.service.MkConsumeCashbackRecordService; import com.czg.market.vo.MkConsumeCashbackVO; import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.core.update.UpdateWrapper; import com.mybatisflex.spring.service.impl.ServiceImpl; -import com.czg.market.entity.MkConsumeCashback; import com.czg.market.service.MkConsumeCashbackService; import com.czg.service.market.mapper.MkConsumeCashbackMapper; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; /** * 服务层实现。 @@ -30,10 +38,16 @@ import java.math.BigDecimal; * @author zs * @since 2025-10-13 */ +@Slf4j @Service public class MkConsumeCashbackServiceImpl extends ServiceImpl implements MkConsumeCashbackService{ @DubboReference private ShopInfoService shopInfoService; + @DubboReference + private ShopUserService shopUserService; + @Resource + private MkConsumeCashbackRecordService consumeCashbackRecordService; + @Override public MkConsumeCashbackVO detail(Long shopId) { MkConsumeCashback consumeCashback = getOne(new QueryWrapper().eq(MkConsumeCashback::getMainShopId, shopId)); @@ -75,4 +89,36 @@ public class MkConsumeCashbackServiceImpl extends ServiceImpl cashbackStepList = config.getCashbackStepList(); + if (cashbackStepList != null && !cashbackStepList.isEmpty()) { + // 固定金额 + if (TableValueConstant.MkConsumeCashback.CashbackType.FIX.getCode().equals(config.getCashbackType())) { + + } + config.setCashbackStepList(cashbackStepList.stream().sorted(Comparator.comparing(MkConsumeCashbackStep::getAmount)).collect(Collectors.toList())); + for (MkConsumeCashbackStep cashbackStep : cashbackStepList) { + if (cashbackStep.getAmount().compareTo(amount) <= 0 ) { + MkConsumeCashbackRecord mkConsumeCashbackRecord = new MkConsumeCashbackRecord().setOrderNo(orderNo).setOrderId(orderId) + .setMainShopId(mainShopId).setShopId(shopId).setAmount(amount) + .setCashbackAmount(cashbackStep.getCashbackAmount()).setUserId(userId) + .setShopUserId(shopUser.getId()); + consumeCashbackRecordService.save(mkConsumeCashbackRecord); + shopUserService.updateMoney(new ShopUserMoneyEditDTO().setId(shopUser.getId()).setType(1) + .setRelationId(mkConsumeCashbackRecord.getId()).setMoney(cashbackStep.getCashbackAmount()).setBizEnum(ShopUserFlowBizEnum.CASHBACK) + .setRemark(StrUtil.format("订单消费: {}, 返现: {}", amount, cashbackStep.getCashbackAmount()))); + break; + } + } + } + } }