|
@@ -539,7 +539,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
if (musicSheetDto.getAuditVersion() == null) {
|
|
|
musicSheetDto.setAuditVersion(YesOrNoEnum.NO);
|
|
|
}
|
|
|
- if (musicSheetDto.getChargeType().equals(ChargeTypeEnum.VIP)) {
|
|
|
+ if (musicSheetDto.getChargeType().equals(ChargeTypeEnum.VIP) || musicSheetDto.getChargeType().equals(ChargeTypeEnum.FREE)) {
|
|
|
musicSheetDto.setMusicPrice(BigDecimal.ZERO);
|
|
|
}
|
|
|
|
|
@@ -650,16 +650,24 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
BigDecimal serviceFee = new BigDecimal(musicSheetServiceFee).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
|
|
|
//支付金额
|
|
|
BigDecimal actualPrice = userOrderDetailVo.getActualPrice();
|
|
|
+ BigDecimal expectPrice = userOrderDetailVo.getExpectPrice();
|
|
|
|
|
|
- //服务费
|
|
|
- BigDecimal serviceFeeAmount = actualPrice.multiply(serviceFee).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ //服务费 原价的平台服务费 ,减去优惠券金额
|
|
|
+ BigDecimal serviceFeeAmount = expectPrice.multiply(serviceFee).subtract(userOrderDetailVo.getCouponAmount()).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ if (serviceFeeAmount.compareTo(BigDecimal.ZERO) <0) {
|
|
|
+ serviceFeeAmount = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
|
|
|
// 保存购买记录
|
|
|
addMusicSheetPurchaseRecord(userOrderDetailVo, actualPrice, serviceFeeAmount);
|
|
|
|
|
|
if (!musicSheet.getSourceType().getCode().equals(SourceTypeEnum.PLATFORM.getCode())) {
|
|
|
+
|
|
|
+ // 老师收入
|
|
|
+ BigDecimal teacherAmount = BigDecimal.ONE.subtract(serviceFee).multiply(expectPrice);
|
|
|
+
|
|
|
// 加入账户
|
|
|
- addTeacherAccount(userOrderDetailVo, actualPrice, serviceFeeAmount, userOrderDetailVo.getBizId());
|
|
|
+ addTeacherAccount(userOrderDetailVo, teacherAmount, userOrderDetailVo.getBizId());
|
|
|
}
|
|
|
|
|
|
// 消息通知
|
|
@@ -754,16 +762,14 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
|
|
|
* 添加金额到老师账户
|
|
|
*
|
|
|
* @param userOrderDetailVo 订单信息
|
|
|
- * @param actualPrice 付款价格
|
|
|
- * @param serviceFeeAmount 服务费
|
|
|
+ * @param transAmount 老师收入
|
|
|
* @param musicSheetId 曲目id
|
|
|
*/
|
|
|
- private void addTeacherAccount(UserOrderDetailVo userOrderDetailVo, BigDecimal actualPrice, BigDecimal serviceFeeAmount,
|
|
|
+ private void addTeacherAccount(UserOrderDetailVo userOrderDetailVo, BigDecimal transAmount,
|
|
|
Long musicSheetId) {
|
|
|
//获取账期时间
|
|
|
Date accountPeriodTime = userOrderService.getAccountPeriodTime(userOrderDetailVo);
|
|
|
|
|
|
- BigDecimal transAmount = actualPrice.subtract(serviceFeeAmount).setScale(2, RoundingMode.HALF_UP);
|
|
|
//插入老师账户变更记录-老师预收
|
|
|
userAccountService.accountRecord(
|
|
|
new UserAccountRecordDto(userOrderDetailVo.getMerchId(), PostStatusEnum.WAIT, transAmount, InOrOutEnum.IN,
|