生日有礼修改

This commit is contained in:
张松
2025-10-16 16:46:03 +08:00
parent b4f52dd555
commit 04a45099a9
6 changed files with 81 additions and 4 deletions

View File

@@ -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<MkConsumeCashbackMapper, MkConsumeCashback> 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<MkConsumeCashbackM
return updateById(consumeCashback);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void cashback(Long shopId, Long userId, BigDecimal amount, Long orderId, String orderNo) {
Long mainShopId = shopInfoService.getMainIdByShopId(shopId);
MkConsumeCashbackVO config = detail(mainShopId);
if (config.getIsEnable() == 0) {
log.info("消费返现未开启, {}", shopId);
return;
}
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getMainShopId, mainShopId).eq(ShopUser::getUserId, userId));
List<MkConsumeCashbackStep> 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;
}
}
}
}
}