Browse Source

平台收入逻辑修改

liujunchi 2 years ago
parent
commit
ad64e3845e

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/PlatformCashAccountRecordService.java

@@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dao.PlatformCashAccountRecordDao;
 import com.yonge.cooleshow.biz.dal.dto.search.PlatformCashAccountRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
+import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.cooleshow.biz.dal.vo.PlatformCashAccountRecordSummaryVo;
 
 import java.util.List;
@@ -49,5 +51,16 @@ public interface PlatformCashAccountRecordService extends IService<PlatformCashA
      * @param goodType
      */
     void mallRecordedRecord(Long productSkuId, String orderSn, String goodType);
+
+
+    /**
+     * 更新入账状态成功
+     *
+     * @param orderNo 订单号
+     * @param bizType 订单类型
+     * @param bizId 业务id
+     * @param type 收入 / 支出
+     */
+    void recordedRecord(String orderNo, AccountBizTypeEnum bizType, Long bizId, InOrOutEnum type);
 }
 

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -123,6 +123,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     private UserAccountRecordService userAccountRecordService;
     @Autowired
     private UserOrderService userOrderService;
+
+    @Autowired
+    private PlatformCashAccountRecordService platformCashAccountRecordService;
     
     @Autowired
     private StudentService studentService;
@@ -1880,6 +1883,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
                 UserAccountRecordVo record = userAccountRecordService.detail(dto.getOrderNo(), dto.getBizType(), dto.getBizId());
                 if (null != record) {
                     userAccountService.accountChange(record, PostStatusEnum.RECORDED);
+                    platformCashAccountRecordService.recordedRecord(dto.getOrderNo(), dto.getBizType(), dto.getBizId(),InOrOutEnum.OUT);
                 }
             }
             Set<Long> bizIds = list.stream().map(UserAccountRecordDto::getBizId).collect(Collectors.toSet());

+ 15 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PlatformCashAccountRecordServiceImpl.java

@@ -1,10 +1,13 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.cooleshow.biz.dal.service.UserAccountRecordService;
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
 import com.yonge.toolset.base.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -64,8 +67,6 @@ public class PlatformCashAccountRecordServiceImpl extends ServiceImpl<PlatformCa
     public boolean updateWaitRecord() {
         //平台账户修改
         List<String> paramNames = new ArrayList<>();
-        paramNames.add(AccountBizTypeEnum.PRACTICE.getCode());
-        paramNames.add(AccountBizTypeEnum.LIVE.getCode());
         paramNames.add(AccountBizTypeEnum.LIVE_SHARE.getCode());
         paramNames.add(AccountBizTypeEnum.VIDEO.getCode());
         paramNames.add(AccountBizTypeEnum.VIDEO_SHARE.getCode());
@@ -102,5 +103,17 @@ public class PlatformCashAccountRecordServiceImpl extends ServiceImpl<PlatformCa
 
         baseMapper.mallRecordedRecord(orderSn, goodType, productSkuId);
     }
+
+    @Override
+    public void recordedRecord(String orderNo, AccountBizTypeEnum bizType, Long bizId, InOrOutEnum type) {
+        this.lambdaUpdate()
+                .eq(PlatformCashAccountRecord::getOrderNo,orderNo)
+                .eq(PlatformCashAccountRecord::getBizType,bizId)
+                .eq(PlatformCashAccountRecord::getBizId,bizId)
+                .eq(PlatformCashAccountRecord::getInOrOut,type)
+                .set(PlatformCashAccountRecord::getPostStatus, PostStatusEnum.RECORDED)
+                .set(PlatformCashAccountRecord::getUpdateTime,new Date())
+                .update();
+    }
 }
 

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserAccountRecordServiceImpl.java

@@ -91,7 +91,7 @@ public class UserAccountRecordServiceImpl extends ServiceImpl<UserAccountRecordD
 
     @Override
     public void updateWaitRecord() {
-        //平台账户修改
+        //老师账户修改
         List<String> paramNames = new ArrayList<>();
         paramNames.add(AccountBizTypeEnum.ACTI_REGIST_SHARE.getCode());
         paramNames.add(AccountBizTypeEnum.LIVE_SHARE.getCode());

+ 13 - 10
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

@@ -959,21 +959,24 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             platformFeeRate = BigDecimal.ONE;
         }
         BigDecimal platformFee = expectPrice.multiply(platformFeeRate).setScale(2, RoundingMode.HALF_UP);
+        BigDecimal teacherFee = expectPrice.subtract(platformFee);
         platformFee = platformFee.subtract(orderDetailVo.getCouponAmount());
 
         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(), new Date());
-            } else {
-                AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(orderDetailVo.getGoodType().getCode());
-                platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getUserId(), platformFee,
+            // 订单实收
+            AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(orderDetailVo.getGoodType().getCode());
+            PlatformCashAccountRecord platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getUserId(), orderDetailVo.getActualPrice(),
                         InOrOutEnum.IN, PostStatusEnum.RECORDED, bizTypeEnum, orderDetailVo.getBizId(),
                         orderDetailVo.getOrderNo(), new Date());
-            }
             platformCashAccountRecordService.save(platformCashAccountRecord);
+            // 支出给老师金额
+            if (teacherFee.compareTo(BigDecimal.ZERO) >0) {
+                platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getUserId(), teacherFee,
+                                              InOrOutEnum.OUT, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(),
+                                              orderDetailVo.getOrderNo(), accountPeriodTime);
+                platformCashAccountRecordService.save(platformCashAccountRecord);
+            }
+
 
             //卖家不能分润自己 买家和分润人相同,不分润
             if (null != orderDetailVo.getRecomUserId() && orderDetailVo.getRecomUserId() != 0
@@ -985,7 +988,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
                 //入老师账户
                 BigDecimal shareFee = platformFee.multiply(shareFeeRate).setScale(2, RoundingMode.HALF_UP);
                 if (shareFee.compareTo(BigDecimal.ZERO) > 0) {
-                    AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(orderDetailVo.getGoodType().getCode() + "_SHARE");
+                    bizTypeEnum = AccountBizTypeEnum.valueOf(orderDetailVo.getGoodType().getCode() + "_SHARE");
                     if (null != bizTypeEnum) {
                         //插入分润老师账户变更记录-分润老师预收
                         HttpResponseResult<UserAccountRecord> recomRecordRes = userAccountService.accountRecord(