循环依赖

This commit is contained in:
wangw 2025-10-27 14:09:31 +08:00
parent 6118711919
commit 7c18e80c88
6 changed files with 92 additions and 69 deletions

View File

@ -5,6 +5,7 @@ import com.czg.annotation.SaCheckMainShop;
import com.czg.market.dto.MkDistributionConfigDTO;
import com.czg.market.service.MkDistributionAmountFlowService;
import com.czg.market.service.MkDistributionConfigService;
import com.czg.market.service.MkDistributionUserService;
import com.czg.market.vo.*;
import com.czg.order.dto.MkDistributionPayDTO;
import com.czg.resp.CzgResult;
@ -30,6 +31,8 @@ public class DistributionController {
@Resource
private MkDistributionConfigService configService;
@Resource
private MkDistributionUserService distributionUserService;
@Resource
private MkDistributionAmountFlowService distributionAmountFlowService;
/**
@ -64,7 +67,7 @@ public class DistributionController {
AssertUtil.isNull(payParam.getShopId(), "店铺id不能为空");
AssertUtil.isNull(payParam.getAmount(), "充值金额不能为空");
AssertUtil.isTrue(payParam.getAmount().compareTo(BigDecimal.ZERO) == 0, "金额不为0");
return CzgResult.success(configService.cashPayOrder(StpKit.USER.getLoginIdAsLong(), payParam));
return CzgResult.success(distributionUserService.cashPayOrder(StpKit.USER.getLoginIdAsLong(), payParam));
}
/**

View File

@ -19,16 +19,4 @@ public interface MkDistributionConfigService extends IService<MkDistributionConf
MkDistributionConfigVO detail(Long mainShopId);
Boolean edit(Long shopId, MkDistributionConfigDTO dto);
Map<String, Object> pay(long userId, MkDistributionPayDTO payDTO);
Boolean cashPayOrder(long adminId, MkDistributionPayDTO payParam);
/**
* 分销员开通
* @param userId 用户
* @param amount 金额
* @param shopId 店铺id
*/
void open(Long userId, BigDecimal amount, Long shopId, Long sourceId);
}

View File

@ -2,9 +2,13 @@ package com.czg.market.service;
import com.czg.market.dto.MkDistributionUserDTO;
import com.czg.market.entity.MkDistributionUser;
import com.czg.order.dto.MkDistributionPayDTO;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import java.math.BigDecimal;
import java.util.Map;
/**
* 分销员表 服务层
*
@ -37,4 +41,17 @@ public interface MkDistributionUserService extends IService<MkDistributionUser>
*/
void deleteDistributionUser(Long id);
Map<String, Object> pay(long userId, MkDistributionPayDTO payDTO);
Boolean cashPayOrder(long adminId, MkDistributionPayDTO payParam);
/**
* 分销员开通
* @param userId 用户
* @param amount 金额
* @param shopId 店铺id
*/
void open(Long userId, BigDecimal amount, Long shopId, Long sourceId);
}

View File

@ -49,19 +49,8 @@ public class MkDistributionConfigServiceImpl extends ServiceImpl<MkDistributionC
@Resource
private MkDistributionLevelConfigService levelConfigService;
@Resource
private MkDistributionAmountFlowService distributionAmountFlowService;
@Resource
private MkDistributionUserService distributionUserService;
@Resource
private ShopUserService shopUserService;
@DubboReference
private OrderPaymentService orderPaymentService;
@DubboReference
private ShopInfoService shopInfoService;
@DubboReference
private WxService wxService;
@Override
@Cacheable(key = "#shopId")
@ -91,47 +80,4 @@ public class MkDistributionConfigServiceImpl extends ServiceImpl<MkDistributionC
return updateById(config);
}
@Override
public Map<String, Object> pay(long userId, MkDistributionPayDTO payDTO) {
MkDistributionConfigVO detail = detail(payDTO.getShopId());
AssertUtil.isTrue(detail.getIsEnable() != 1, "分销未开启");
if (!TableValueConstant.DistributionConfig.OpenType.PAY.getCode().equals(detail.getOpenType())) {
throw new CzgException("当前未开启购买分销配置");
}
OrderPayment orderPayment = new OrderPayment().setShopId(payDTO.getShopId()).setSourceId(userId)
.setPayType("distribution").setOrderNo(payDTO.getPlatformType() + IdUtil.getSnowflakeNextId()).setAmount(detail.getPayAmount());
orderPaymentService.save(orderPayment);
return Map.of();
}
@Override
public Boolean cashPayOrder(long adminId, MkDistributionPayDTO payParam) {
ShopInfo shopInfo = shopInfoService.getById(payParam.getShopId());
AssertUtil.isNull(shopInfo, "店铺不存在");
BigDecimal amount = shopInfoService.updateAmount(shopInfo.getId(), payParam.getAmount());
Long mainShopId = shopInfoService.getMainIdByShopId(shopInfo.getId());
distributionAmountFlowService.save(new MkDistributionAmountFlow()
.setType(payParam.getAmount().compareTo(BigDecimal.ZERO) < 0 ? TableValueConstant.DistributionAmountFlow.Type.MANUAL_SUB.getCode() :
TableValueConstant.DistributionAmountFlow.Type.MANUAL_RECHARGE.getCode())
.setMainShopId(mainShopId).setShopId(shopInfo.getId()).setAmount(amount).setChangeAmount(payParam.getAmount())
.setRemark(payParam.getRemark()).setOpAccount(StpKit.USER.getAccount()));
return true;
}
@Override
public void open(Long userId, BigDecimal amount, Long shopId, Long sourceId) {
ShopUser shopUserInfo = shopUserService.getShopUserInfo(shopId, userId);
Long mainShopId = shopInfoService.getMainIdByShopId(shopId);
BigDecimal finalAmount = shopInfoService.updateAmount(shopId, amount);
distributionAmountFlowService.save(new MkDistributionAmountFlow()
.setType(TableValueConstant.DistributionAmountFlow.Type.OPEN.getCode())
.setMainShopId(mainShopId).setShopId(shopId).setAmount(finalAmount).setChangeAmount(amount).setSourceId(sourceId)
.setRemark("分销员购买").setOpAccount(StpKit.USER.getAccount()));
distributionUserService.addDistributionUser(new MkDistributionUser().setParentId(null).setShopId(shopId)
.setShopUserId(shopUserInfo.getId()).setOpeningMethod("付费开通"));
}
}

View File

@ -2,16 +2,29 @@ package com.czg.service.market.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
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.exception.CzgException;
import com.czg.market.dto.MkDistributionUserDTO;
import com.czg.market.entity.MkDistributionAmountFlow;
import com.czg.market.entity.MkDistributionConfig;
import com.czg.market.entity.MkDistributionLevelConfig;
import com.czg.market.entity.MkDistributionUser;
import com.czg.market.service.MkDistributionAmountFlowService;
import com.czg.market.service.MkDistributionConfigService;
import com.czg.market.service.MkDistributionLevelConfigService;
import com.czg.market.service.MkDistributionUserService;
import com.czg.market.vo.MkDistributionConfigVO;
import com.czg.order.dto.MkDistributionPayDTO;
import com.czg.order.entity.OrderPayment;
import com.czg.order.service.OrderPaymentService;
import com.czg.sa.StpKit;
import com.czg.service.market.mapper.MkDistributionUserMapper;
import com.czg.system.service.WxService;
import com.czg.utils.AssertUtil;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
@ -20,6 +33,7 @@ import jakarta.annotation.Resource;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@ -41,6 +55,17 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
private MkDistributionLevelConfigService levelConfigService;
@DubboReference
private ShopUserService shopUserService;
@Resource
private MkDistributionAmountFlowService distributionAmountFlowService;
@Resource
private MkDistributionUserService distributionUserService;
@DubboReference
private OrderPaymentService orderPaymentService;
@DubboReference
private ShopInfoService shopInfoService;
@DubboReference
private WxService wxService;
@Override
public Page<MkDistributionUserDTO> getDistributionUser(MkDistributionUserDTO param) {
@ -111,4 +136,48 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
distributionUser.setDel(true);
updateById(distributionUser);
}
@Override
public Map<String, Object> pay(long userId, MkDistributionPayDTO payDTO) {
MkDistributionConfigVO detail = mkDistributionConfigService.detail(payDTO.getShopId());
AssertUtil.isTrue(detail.getIsEnable() != 1, "分销未开启");
if (!TableValueConstant.DistributionConfig.OpenType.PAY.getCode().equals(detail.getOpenType())) {
throw new CzgException("当前未开启购买分销配置");
}
OrderPayment orderPayment = new OrderPayment().setShopId(payDTO.getShopId()).setSourceId(userId)
.setPayType("distribution").setOrderNo(payDTO.getPlatformType() + IdUtil.getSnowflakeNextId()).setAmount(detail.getPayAmount());
orderPaymentService.save(orderPayment);
return Map.of();
}
@Override
public Boolean cashPayOrder(long adminId, MkDistributionPayDTO payParam) {
ShopInfo shopInfo = shopInfoService.getById(payParam.getShopId());
AssertUtil.isNull(shopInfo, "店铺不存在");
BigDecimal amount = shopInfoService.updateAmount(shopInfo.getId(), payParam.getAmount());
Long mainShopId = shopInfoService.getMainIdByShopId(shopInfo.getId());
distributionAmountFlowService.save(new MkDistributionAmountFlow()
.setType(payParam.getAmount().compareTo(BigDecimal.ZERO) < 0 ? TableValueConstant.DistributionAmountFlow.Type.MANUAL_SUB.getCode() :
TableValueConstant.DistributionAmountFlow.Type.MANUAL_RECHARGE.getCode())
.setMainShopId(mainShopId).setShopId(shopInfo.getId()).setAmount(amount).setChangeAmount(payParam.getAmount())
.setRemark(payParam.getRemark()).setOpAccount(StpKit.USER.getAccount()));
return true;
}
@Override
public void open(Long userId, BigDecimal amount, Long shopId, Long sourceId) {
ShopUser shopUserInfo = shopUserService.getShopUserInfo(shopId, userId);
Long mainShopId = shopInfoService.getMainIdByShopId(shopId);
BigDecimal finalAmount = shopInfoService.updateAmount(shopId, amount);
distributionAmountFlowService.save(new MkDistributionAmountFlow()
.setType(TableValueConstant.DistributionAmountFlow.Type.OPEN.getCode())
.setMainShopId(mainShopId).setShopId(shopId).setAmount(finalAmount).setChangeAmount(amount).setSourceId(sourceId)
.setRemark("分销员购买").setOpAccount(StpKit.USER.getAccount()));
distributionUserService.addDistributionUser(new MkDistributionUser().setParentId(null).setShopId(shopId)
.setShopUserId(shopUserInfo.getId()).setOpeningMethod("付费开通"));
}
}

View File

@ -137,7 +137,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
@Resource
private MkConsumeCashbackService consumeCashbackService;
@Resource
private MkDistributionConfigService distributionConfigService;
private MkDistributionUserService distributionUserService;
// 延迟 5
private static final long DELAY = 5;
//重试次数
@ -1158,7 +1158,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
// 分销员开通
} else if ("distribution".equals(payment.getPayType())) {
distributionConfigService.open(payment.getSourceId(), payment.getAmount(), payment.getShopId(), payment.getId());
distributionUserService.open(payment.getSourceId(), payment.getAmount(), payment.getShopId(), payment.getId());
}
}
}