Bläddra i källkod

Merge branch 'develop'

liujc 1 år sedan
förälder
incheckning
5c792679b7

+ 28 - 39
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PaymentDivMemberRecordServiceImpl.java

@@ -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 {

+ 4 - 2
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantActivationCodeController.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.microsvc.toolkit.common.response.paging.PageInfo;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.microsvc.toolkit.common.response.template.R;
@@ -32,6 +33,7 @@ import com.yonge.toolset.utils.easyexcel.ErrMsg;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReader;
 import com.yonge.toolset.utils.easyexcel.ExcelException;
 import com.yonge.toolset.utils.easyexcel.ExcelUtils;
+import com.yonge.toolset.utils.http.HttpUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -206,7 +208,7 @@ public class TenantActivationCodeController extends BaseController {
         String uploadOssPath = MessageFormat.format("excel-download/{0}", DateTime.now().toString("yyyy-MM"));
 
         // 文件上传下载地址
-        String uploadPath = MessageFormat.format("{0}/{1}-{2}.xlsx", uploadOssPath, fileName, DateTime.now().toString("MMddHHmmss"));
+        String uploadPath = MessageFormat.format("{0}/{1}-{2}.xlsx", uploadOssPath, String.valueOf(IdWorker.getId()), DateTime.now().toString("MMddHHmmss"));
 
         // 本地文件地址
         String localPath = DownloadManager.getInstance().path(uploadPath);
@@ -233,7 +235,7 @@ public class TenantActivationCodeController extends BaseController {
         return TenantActivationCodeWrapper.ExportFile
                 .builder()
                 .fileName(MessageFormat.format("{0}.xlsx", fileName))
-                .downloadPath(downloadPath)
+                .downloadPath(HttpUtil.getSortUrl(downloadPath))
                 .build();
     }