|
|
@@ -2,6 +2,7 @@ package com.ruoyi.subsidy.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.ruoyi.business.domain.Business;
|
|
|
import com.ruoyi.business.domain.bo.BusinessBalanceRecordBo;
|
|
|
import com.ruoyi.business.enums.BusinessBillType;
|
|
|
import com.ruoyi.business.enums.BusinessSourceType;
|
|
|
@@ -16,12 +17,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.ruoyi.onlineorder.domain.OnlineOrder;
|
|
|
+import com.ruoyi.shop.business.service.IUserBusinessRoleService;
|
|
|
import com.ruoyi.subsidy.domain.SubsidyMode;
|
|
|
import com.ruoyi.subsidy.domain.bo.SubsidyModeConversionLogBo;
|
|
|
import com.ruoyi.subsidy.domain.bo.SubsidySharedPoolLogBo;
|
|
|
import com.ruoyi.subsidy.enums.SharedPoolBehaviorType;
|
|
|
import com.ruoyi.subsidy.enums.SharedSettlementMode;
|
|
|
import com.ruoyi.subsidy.service.*;
|
|
|
+import com.ruoyi.user.domain.bo.UserChangeBalanceBo;
|
|
|
+import com.ruoyi.user.enums.BalanceSourceType;
|
|
|
+import com.ruoyi.user.service.IUserService;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
@@ -74,6 +79,10 @@ public class SubsidySharedPoolServiceImpl implements ISubsidySharedPoolService {
|
|
|
@Resource
|
|
|
private IBusinessService businessService;
|
|
|
|
|
|
+ @Lazy
|
|
|
+ @Resource
|
|
|
+ private IUserService userService;
|
|
|
+
|
|
|
/**
|
|
|
* 查询商户均摊池分页
|
|
|
*
|
|
|
@@ -243,19 +252,7 @@ public class SubsidySharedPoolServiceImpl implements ISubsidySharedPoolService {
|
|
|
}
|
|
|
//开始结算,并把结算剩余还给商家,同时需要记好均摊池改变日志
|
|
|
BigDecimal remaining = subsidyQueueService.sharedSubsidyCompute(subsidySharedPool.getBusinessId(), subsidySharedPool.getTotalSharedAmount());
|
|
|
- if(remaining.compareTo(BigDecimal.ZERO)>0)
|
|
|
- {
|
|
|
- // 有了商家的实际补贴金额,就可以计算商家当前这个订单的实际所得
|
|
|
- // 实际所得 = 订单金额- 平台服务费(5%)- (商家补贴金额(让利)-补贴返还)
|
|
|
- businessService.changeBalance(BusinessBalanceRecordBo.builder()
|
|
|
- .billType(BusinessBillType.IN)
|
|
|
- .businessId(subsidySharedPool.getBusinessId())
|
|
|
- .entryValue(remaining)
|
|
|
- .sourceType(BusinessSourceType.SUBSIDY_OVERFLOW_RETURN)
|
|
|
- .sourceId(sharedId)
|
|
|
- .remark(String.format("均摊定时补贴后溢出,返还商家 %s", remaining))
|
|
|
- .build());
|
|
|
- }
|
|
|
+
|
|
|
subsidySharedPool.setReturnBusinessAmount(remaining);
|
|
|
subsidySharedPool.setSettlemented(true);
|
|
|
subsidySharedPool.setSettlementMode(sharedSettlementMode);
|
|
|
@@ -263,6 +260,39 @@ public class SubsidySharedPoolServiceImpl implements ISubsidySharedPoolService {
|
|
|
subsidySharedPool.setSettlementRemark("均摊定时补贴");
|
|
|
baseMapper.updateById(subsidySharedPool);
|
|
|
|
|
|
+
|
|
|
+ if(remaining.compareTo(BigDecimal.ZERO)>0)
|
|
|
+ {
|
|
|
+ Long businessId = subsidySharedPool.getBusinessId();
|
|
|
+ Business business = businessService.loadById(businessId, false);
|
|
|
+ if(ObjectUtil.isNotNull( business)) {
|
|
|
+ //用户余额增加
|
|
|
+ userService.changeUserBalance(UserChangeBalanceBo.builder()
|
|
|
+ .userId(business.getRelationUserId())
|
|
|
+ .entryValue(remaining)
|
|
|
+ .isAdd(true)
|
|
|
+ .sourceType(BalanceSourceType.SUBSIDY_OVERFLOW_RETURN)
|
|
|
+ .sourceId(subsidySharedPool.getSharedId())
|
|
|
+ .remark("消费排队均摊补贴溢出退回")
|
|
|
+ .businessId(businessId)
|
|
|
+ .businessName(business.getBusinessName())
|
|
|
+ .build());
|
|
|
+ }
|
|
|
+// // 商家余额做废
|
|
|
+// // 有了商家的实际补贴金额,就可以计算商家当前这个订单的实际所得
|
|
|
+// // 实际所得 = 订单金额- 平台服务费(5%)- (商家补贴金额(让利)-补贴返还)
|
|
|
+// businessService.changeBalance(BusinessBalanceRecordBo.builder()
|
|
|
+// .billType(BusinessBillType.IN)
|
|
|
+// .businessId(subsidySharedPool.getBusinessId())
|
|
|
+// .entryValue(remaining)
|
|
|
+// .sourceType(BusinessSourceType.SUBSIDY_OVERFLOW_RETURN)
|
|
|
+// .sourceId(sharedId)
|
|
|
+// .remark(String.format("均摊定时补贴后溢出,返还商家 %s", remaining))
|
|
|
+// .build());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
if(SharedSettlementMode.DUE_SETTLEMENT.equals(sharedSettlementMode)) {
|
|
|
//如果还是同样的模式,则开启新的均摊池
|
|
|
SubsidyMode currentMode = subsidyModeService.loadCurrentMode(subsidySharedPool.getBusinessId());
|