|
|
@@ -204,6 +204,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void setSuccessStatus() {
|
|
|
OrderSearch query = new OrderSearch();
|
|
|
query.setStatus("WAIT_PAY,PAYING");
|
|
|
@@ -224,6 +225,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void setOrderStatus(String orderNo, OrderStatusEnum orderStatus) {
|
|
|
UserOrderVo detail = detail(orderNo, null);
|
|
|
if (OrderStatusEnum.WAIT_PAY.equals(detail.getStatus())
|
|
|
@@ -798,25 +800,28 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
if (expectPrice.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
return;
|
|
|
}
|
|
|
+ //获取账期时间
|
|
|
+ Date accountPeriodTime = getAccountPeriodTime(orderDetailVo);
|
|
|
+
|
|
|
//平台收入
|
|
|
//获取平台服务费率
|
|
|
BigDecimal platformFeeRate = getPlatformFreeByGoodType(orderDetailVo.getGoodType());
|
|
|
- if (platformFeeRate.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- //没有卖家的为平台订单,平台全额收益
|
|
|
- if(null == orderDetailVo.getMerchId() || orderDetailVo.getMerchId().equals(0L)){
|
|
|
- platformFeeRate = BigDecimal.ONE;
|
|
|
- }
|
|
|
-
|
|
|
- BigDecimal platformFee = expectPrice.multiply(platformFeeRate).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ //没有卖家的为平台订单,平台全额收益
|
|
|
+ if (null == orderDetailVo.getMerchId() || orderDetailVo.getMerchId().equals(0L)) {
|
|
|
+ platformFeeRate = BigDecimal.ONE;
|
|
|
+ }
|
|
|
+ BigDecimal platformFee = expectPrice.multiply(platformFeeRate).setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
|
+ if (platformFee.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
PlatformCashAccountRecord platformCashAccountRecord;
|
|
|
if (GoodTypeEnum.PINAO_ROOM.equals(orderDetailVo.getGoodType())) {
|
|
|
platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getUserId(), platformFee,
|
|
|
- InOrOutEnum.IN, PostStatusEnum.RECORDED, AccountBizTypeEnum.PIAON_ROOM, orderDetailVo.getBizId(), orderDetailVo.getOrderNo());
|
|
|
+ InOrOutEnum.IN, PostStatusEnum.RECORDED, AccountBizTypeEnum.PIAON_ROOM, orderDetailVo.getBizId(),
|
|
|
+ orderDetailVo.getOrderNo(),accountPeriodTime);
|
|
|
} else {
|
|
|
AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(orderDetailVo.getGoodType().getCode());
|
|
|
platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getUserId(), platformFee,
|
|
|
- InOrOutEnum.IN, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getOrderNo());
|
|
|
+ InOrOutEnum.IN, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getOrderNo(),accountPeriodTime);
|
|
|
}
|
|
|
platformCashAccountRecordService.save(platformCashAccountRecord);
|
|
|
}
|
|
|
@@ -825,19 +830,19 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
if (null != orderDetailVo.getRecomUserId()) {
|
|
|
//获取分润收益费率
|
|
|
BigDecimal shareFeeRate = getShareFreeByGoodType(orderDetailVo.getGoodType());
|
|
|
- if (shareFeeRate.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- //入老师账户
|
|
|
- BigDecimal shareFee = expectPrice.multiply(shareFeeRate).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ //入老师账户
|
|
|
+ BigDecimal shareFee = expectPrice.multiply(shareFeeRate).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ if (shareFee.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(orderDetailVo.getGoodType().getCode() + "_SHARE");
|
|
|
- if(null != bizTypeEnum){
|
|
|
+ if (null != bizTypeEnum) {
|
|
|
//插入分润老师账户变更记录-分润老师预收
|
|
|
HttpResponseResult<UserAccountRecord> recomRecordRes = userAccountService.accountRecord(
|
|
|
new UserAccountRecordDto(orderDetailVo.getRecomUserId(), PostStatusEnum.WAIT, shareFee, InOrOutEnum.IN,
|
|
|
- bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getGoodName(), orderDetailVo.getOrderNo()));
|
|
|
- if(recomRecordRes.getStatus()){
|
|
|
+ bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getGoodName(), orderDetailVo.getOrderNo(),orderDetailVo.getUserId()));
|
|
|
+ if (recomRecordRes.getStatus()) {
|
|
|
//插入平台预支
|
|
|
PlatformCashAccountRecord platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getRecomUserId(), shareFee,
|
|
|
- InOrOutEnum.OUT, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getOrderNo());
|
|
|
+ InOrOutEnum.OUT, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getOrderNo(),accountPeriodTime);
|
|
|
platformCashAccountRecordService.save(platformCashAccountRecord);
|
|
|
}
|
|
|
}
|
|
|
@@ -846,6 +851,33 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 获取账期时间
|
|
|
+ *
|
|
|
+ * @param orderDetailVo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private Date getAccountPeriodTime(UserOrderDetailVo orderDetailVo) {
|
|
|
+ Calendar instance = Calendar.getInstance();
|
|
|
+ GoodTypeEnum goodType = orderDetailVo.getGoodType();
|
|
|
+
|
|
|
+ if (GoodTypeEnum.VIP.equals(goodType)) {
|
|
|
+ instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.VIP_ACCOUNT_PERIOD)));
|
|
|
+ } else if (GoodTypeEnum.VIDEO.equals(goodType)) {
|
|
|
+ instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.VIDEO_ACCOUNT_PERIOD)));
|
|
|
+ } else if (GoodTypeEnum.MUSIC.equals(goodType)) {
|
|
|
+ instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.MUSIC_ACCOUNT_PERIOD)));
|
|
|
+ } else if (GoodTypeEnum.PRACTICE.equals(goodType)) {
|
|
|
+ instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.PRACTICE_ACCOUNT_PERIOD)));
|
|
|
+ } else if (GoodTypeEnum.LIVE.equals(goodType)) {
|
|
|
+ //直播课取直播课成课时间+账期
|
|
|
+
|
|
|
+
|
|
|
+ instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.PRACTICE_ACCOUNT_PERIOD)));
|
|
|
+ }
|
|
|
+ return instance.getTime();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 获取分润收益费率
|
|
|
*
|
|
|
* @param goodType
|
|
|
@@ -906,7 +938,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
return BigDecimal.ZERO;
|
|
|
}
|
|
|
|
|
|
- private void testOrderSuccess(UserOrderVo detail) {
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void testOrderSuccess(UserOrderVo detail) {
|
|
|
if (null == detail || StringUtil.isEmpty(detail.getOrderNo())) {
|
|
|
return;
|
|
|
}
|