|
@@ -6,12 +6,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.beust.jcommander.internal.Lists;
|
|
|
import com.google.common.collect.Maps;
|
|
|
-import com.microsvc.toolkit.middleware.payment.common.api.BasePaymentService;
|
|
|
import com.microsvc.toolkit.middleware.payment.common.api.PaymentServiceContext;
|
|
|
-import com.microsvc.toolkit.middleware.payment.common.api.entity.DivideReq;
|
|
|
-import com.microsvc.toolkit.middleware.payment.common.api.entity.DivideResp;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.CourseScheduleStudentPaymentDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.UserOrderDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDao;
|
|
@@ -32,7 +28,6 @@ import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
|
|
|
import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper;
|
|
|
import com.yonge.cooleshow.common.constant.SysConfigConstant;
|
|
|
import com.yonge.cooleshow.common.entity.HttpResponseResult;
|
|
|
-import com.yonge.cooleshow.common.enums.ESettlementFrom;
|
|
|
import com.yonge.cooleshow.common.enums.EStatus;
|
|
|
import com.yonge.cooleshow.common.enums.PostStatusEnum;
|
|
|
import com.yonge.toolset.base.exception.BizException;
|
|
@@ -42,7 +37,6 @@ import org.apache.commons.lang.StringUtils;
|
|
|
import org.joda.time.DateTime;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
@@ -262,13 +256,9 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
|
|
|
// 计算老师分润数据 平台的真实收益
|
|
|
BigDecimal platformFee = tenantdivMap.getOrDefault(-1L, BigDecimal.ZERO);
|
|
|
|
|
|
-
|
|
|
- // 计算分润
|
|
|
- teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, platformFee);
|
|
|
-
|
|
|
tenantAlbumService.orderSuccess(userPaymentOrder);
|
|
|
|
|
|
- saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap );
|
|
|
+ saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap ,platformFee);
|
|
|
|
|
|
|
|
|
}
|
|
@@ -354,9 +344,7 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
|
|
|
}
|
|
|
|
|
|
|
|
|
- // 计算分润
|
|
|
- teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount);
|
|
|
- saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap);
|
|
|
+ saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount);
|
|
|
}
|
|
|
|
|
|
private boolean checkSendMessage(Long userId, ClientEnum orderClient) {
|
|
@@ -465,10 +453,8 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
|
|
|
// 分润给老师
|
|
|
bizMap.merge(userPaymentOrder.getBizId(), teacherAmount, BigDecimal::add);
|
|
|
}
|
|
|
- // 计算分润
|
|
|
- teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount);
|
|
|
|
|
|
- saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap);
|
|
|
+ saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount);
|
|
|
}
|
|
|
|
|
|
Set<Long> studentIds = new HashSet();
|
|
@@ -604,10 +590,8 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
|
|
|
bizMap.merge(userPaymentOrder.getBizId(), teacherAmount, BigDecimal::add);
|
|
|
}
|
|
|
|
|
|
- // 计算分润
|
|
|
- teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount);
|
|
|
|
|
|
- saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap);
|
|
|
+ saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount);
|
|
|
}
|
|
|
log.info("buyLiveCourseSuccess ok");
|
|
|
//课程购买成功后进行消息推送
|
|
@@ -688,10 +672,7 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
|
|
|
bizMap.merge(userPaymentOrder.getBizId(), teacherAmount, BigDecimal::add);
|
|
|
}
|
|
|
|
|
|
- // 计算分润
|
|
|
- teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount);
|
|
|
-
|
|
|
- saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap);
|
|
|
+ saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount);
|
|
|
|
|
|
|
|
|
// 平台学生 发送推送
|
|
@@ -771,12 +752,9 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
|
|
|
//服务费 原价的平台服务费 ,减去优惠券金额
|
|
|
BigDecimal serviceFeeAmount = userPaymentOrder.getActualPrice();
|
|
|
|
|
|
- // 计算分润
|
|
|
- teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount);
|
|
|
-
|
|
|
memberPriceSettingsService.orderSuccess(userPaymentOrder,checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient()));
|
|
|
|
|
|
- saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap);
|
|
|
+ saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -796,18 +774,15 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
|
|
|
//服务费 原价的平台服务费 ,减去优惠券金额
|
|
|
BigDecimal serviceFeeAmount = userPaymentOrder.getActualPrice();
|
|
|
|
|
|
- // 计算分润
|
|
|
- teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount);
|
|
|
-
|
|
|
|
|
|
activityPlanService.orderSuccess(userPaymentOrder,checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient()));
|
|
|
|
|
|
- saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap);
|
|
|
+ saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount);
|
|
|
}
|
|
|
|
|
|
|
|
|
// 写入数据库
|
|
|
- private void saveData(UserOrderDetailVo userPaymentOrder, Map<Long, BigDecimal> tenantdivMap, Map<Long, BigDecimal> teacherMap, Map<Long, BigDecimal> bizMap) {
|
|
|
+ private void saveData(UserOrderDetailVo userPaymentOrder, Map<Long, BigDecimal> tenantdivMap, Map<Long, BigDecimal> teacherMap, Map<Long, BigDecimal> bizMap, BigDecimal serviceFeeAmount) {
|
|
|
|
|
|
|
|
|
// 判断金额是否和支付金额一致
|
|
@@ -816,14 +791,23 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
|
|
|
log.error("分账金额不一致 orderNo:{} totalAmount:{} actualPrice:{}", userPaymentOrder.getOrderNo(), totalAmount, userPaymentOrder.getActualPrice());
|
|
|
// return;
|
|
|
}
|
|
|
+ // 机构分润
|
|
|
+
|
|
|
+ Map<Long,BigDecimal> tenantShare = new HashMap<>();
|
|
|
+
|
|
|
+ // 计算分润
|
|
|
+ teacherAmount(userPaymentOrder, tenantdivMap, teacherMap,tenantShare, serviceFeeAmount);
|
|
|
|
|
|
|
|
|
// 写入机构收支表
|
|
|
- tenantDivRecord(userPaymentOrder, tenantdivMap);
|
|
|
+ tenantDivRecord(userPaymentOrder, tenantdivMap,false);
|
|
|
|
|
|
// 写入平台
|
|
|
platformDivRecord(userPaymentOrder, tenantdivMap);
|
|
|
|
|
|
+ // 写入机构分润
|
|
|
+ tenantDivRecord(userPaymentOrder, tenantShare,true);
|
|
|
+
|
|
|
//写入老师收入
|
|
|
// 老师分润
|
|
|
for (Map.Entry<Long, BigDecimal> e : bizMap.entrySet()) {
|
|
@@ -959,7 +943,7 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
|
|
|
platformCashAccountRecordService.save(platformCashAccountRecord);
|
|
|
}
|
|
|
|
|
|
- private void tenantDivRecord(UserOrderDetailVo userPaymentOrder, Map<Long, BigDecimal> tenantdivMap) {
|
|
|
+ private void tenantDivRecord(UserOrderDetailVo userPaymentOrder, Map<Long, BigDecimal> tenantdivMap,boolean share) {
|
|
|
// 写入收支表
|
|
|
List<TenantAccountRecord> tenantAccountRecordList = new ArrayList<>();
|
|
|
Date date = new Date();
|
|
@@ -970,13 +954,17 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
|
|
|
if (amount.compareTo(BigDecimal.ZERO) <=0) {
|
|
|
return;
|
|
|
}
|
|
|
+ String type = userPaymentOrder.getGoodType().getCode() ;
|
|
|
+ if (share) {
|
|
|
+ type = type + "_SHARE";
|
|
|
+ }
|
|
|
|
|
|
- AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(userPaymentOrder.getGoodType().getCode());
|
|
|
+ AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(type);
|
|
|
|
|
|
|
|
|
// 写入平台支出表
|
|
|
PlatformCashAccountRecord platformCashAccountRecord2 = new PlatformCashAccountRecord(userPaymentOrder.getUserId(), amount,
|
|
|
- InOrOutEnum.OUT, PostStatusEnum.WAIT, AccountBizTypeEnum.valueOf(userPaymentOrder.getOrderType().name()), userPaymentOrder.getBizId(),
|
|
|
+ InOrOutEnum.OUT, PostStatusEnum.WAIT, bizTypeEnum, userPaymentOrder.getBizId(),
|
|
|
userPaymentOrder.getOrderNo(), date);
|
|
|
platformCashAccountRecordService.save(platformCashAccountRecord2);
|
|
|
|
|
@@ -1000,7 +988,8 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
|
|
|
|
|
|
|
|
|
// 计算分润
|
|
|
- private void teacherAmount(UserOrderDetailVo userPaymentOrder, Map<Long, BigDecimal> tenantdivMap, Map<Long, BigDecimal> teacherMap, BigDecimal platformFee) {
|
|
|
+ private void teacherAmount(UserOrderDetailVo userPaymentOrder, Map<Long, BigDecimal> tenantdivMap, Map<Long, BigDecimal> teacherMap,
|
|
|
+ Map<Long, BigDecimal> tenantShare, BigDecimal platformFee) {
|
|
|
|
|
|
if (platformFee.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
return;
|
|
@@ -1030,7 +1019,7 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
|
|
|
|
|
|
} else if (accountTenantTo.getShareTenant() !=null && accountTenantTo.getShareTenant() > 0) {
|
|
|
// 分润给机构
|
|
|
- tenantdivMap.merge(accountTenantTo.getShareTenant(), shareFee, BigDecimal::add);
|
|
|
+ tenantShare.merge(accountTenantTo.getShareTenant(), shareFee, BigDecimal::add);
|
|
|
tenantdivMap.merge(-1L, shareFee, BigDecimal::subtract);
|
|
|
|
|
|
} else {
|