소스 검색

完成店铺日账单核心逻辑。剩下查询了

lubo 4 달 전
부모
커밋
c9ed11ff46

+ 6 - 2
ruoyi-admin/src/main/java/com/ruoyi/schedule/BusinessSchedule.java

@@ -1,5 +1,7 @@
 package com.ruoyi.schedule;
 
+import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DateUtil;
 import com.ruoyi.business.domain.Business;
 import com.ruoyi.business.service.IBusinessService;
 import com.ruoyi.businessDayBill.service.IBusinessDayBillService;
@@ -25,7 +27,9 @@ public class BusinessSchedule {
     private final IBusinessService businessService;
     private final IBusinessDayBillService businessDayBillService;
 
-    // 每晚一点钏执行一次 店铺过期
+    /**
+     * 每晚0点过1分开始执行一次过期
+     */
     @Scheduled(cron = "${task1h}")
     public void autoExpires() {
         List<Business> list = businessService.needAutoExpires();
@@ -43,7 +47,7 @@ public class BusinessSchedule {
     /**
      * 每晚0点过5分开始执行一次结算
      */
-    @Scheduled(cron = "${task0h5}")
+    @Scheduled(cron = "${task0h10}")
     public void settlementDayBill() {
         businessDayBillService.settlementDayBill(new Date());
     }

+ 2 - 2
ruoyi-admin/src/main/resources/application.yml

@@ -401,8 +401,8 @@ task1h: 0 0 1 * * ?
 #每天0点 30秒
 task0h30: 0 30 0 * * ?
 
-#每天0点 5
-task0h5: 0 5 0 * * ?
+#每天0点 10
+task0h10: 0 10 0 * * ?
 
 online-order:
   payExpireMinute: 30

+ 1 - 0
ruoyi-api/src/main/java/com/ruoyi/api/controller/pay/ApiNotifyController.java

@@ -66,6 +66,7 @@ public class ApiNotifyController extends AbstractApiController {
                     if (order == null) {
                         throw new ServicePayException("FAIL", "失败");
                     }
+                    //平台收入结算处理
                     iShopOrderService.platformIncomeSettleHandle(order);
                     try {
                         iShopOrderMqProductService.autoStockUpMqProductSend(order.getOrderId());

+ 4 - 2
ruoyi-business/src/main/java/com/ruoyi/businessDayBill/service/impl/BusinessDayBillServiceImpl.java

@@ -251,7 +251,7 @@ public class BusinessDayBillServiceImpl implements IBusinessDayBillService {
                 businessDayBill.setBusinessGivePoint( businessDayBill.getBusinessGivePoint().add(bo.getChangeAmount()));
                 break;
             case USER_REFUND:
-                businessDayBill.setActualReceivePayment( businessDayBill.getActualCredited().subtract(bo.getChangeAmount()));
+                businessDayBill.setActualCredited( businessDayBill.getActualCredited().subtract(bo.getChangeAmount()));
                 break;
         }
         this.baseMapper.updateById(businessDayBill);
@@ -259,7 +259,8 @@ public class BusinessDayBillServiceImpl implements IBusinessDayBillService {
 
     @Override
     public void settlementDayBill(Date date) {
-        String format = DateUtil.format(date, "yyyy-MM-dd");
+        Date prevDate = DateUtil.offsetHour(date, -1);
+        String format = DateUtil.format(prevDate, "yyyy-MM-dd");
         List<BusinessDayBill>  businessDayBills = this.baseMapper.selectList(new LambdaQueryWrapper<BusinessDayBill>()
             .eq(BusinessDayBill::getDayValue, format)
             .orderByAsc(BusinessDayBill::getBusinessId)
@@ -271,6 +272,7 @@ public class BusinessDayBillServiceImpl implements IBusinessDayBillService {
             businessDayBill.setTodaySettlementTime(date);
             this.baseMapper.updateById(businessDayBill);
         }
+        this.initAllBusinessDayBill(date);
     }
 
 

+ 2 - 0
ruoyi-line/src/main/java/com/ruoyi/onlineorder/service/impl/OnlineOrderServiceImpl.java

@@ -11,6 +11,8 @@ import com.ruoyi.base.revenue.domain.vo.RevenueSharingConfigVo;
 import com.ruoyi.base.revenue.service.IRevenueSharingConfigService;
 import com.ruoyi.business.domain.Business;
 import com.ruoyi.business.service.IBusinessService;
+import com.ruoyi.businessDayBill.domain.bo.BusinessDayBillChangeBo;
+import com.ruoyi.businessDayBill.enums.BusinessDayBillChangeType;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.CallInterfaceStatus;

+ 14 - 0
ruoyi-line/src/main/java/com/ruoyi/onlinerefundorder/service/impl/OnlineRefundOrderServiceImpl.java

@@ -5,6 +5,9 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.ruoyi.business.domain.Business;
 import com.ruoyi.business.service.IBusinessService;
+import com.ruoyi.businessDayBill.domain.bo.BusinessDayBillChangeBo;
+import com.ruoyi.businessDayBill.enums.BusinessDayBillChangeType;
+import com.ruoyi.businessDayBill.service.IBusinessDayBillService;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.BeanCopyUtils;
 import com.ruoyi.common.utils.StringUtils;
@@ -84,6 +87,10 @@ public class OnlineRefundOrderServiceImpl implements IOnlineRefundOrderService {
     @Resource
     private IBusinessService businessService;
 
+    @Lazy
+    @Resource
+    private IBusinessDayBillService businessDayBillService;
+
     /**
      * 查询在线退款订单分页
      *
@@ -373,6 +380,13 @@ public class OnlineRefundOrderServiceImpl implements IOnlineRefundOrderService {
             refundOrder.setRefundStatus(OnlineOrderRefundStatus.REFUNDED);
             onlineOrder.setEnd( true);
             refundOrder.setRefundCompleteTime(new Date());
+            //改变营业额账单
+            businessDayBillService.changeBusinessDayBill(BusinessDayBillChangeBo.builder()
+                .businessId(onlineOrder.getBusinessId())
+                .changeType(BusinessDayBillChangeType.USER_REFUND)
+                .changeAmount(refundOrder.getRefundAmount())
+                .changeTime(refundOrder.getRefundCompleteTime())
+                .build());
         } else if (Status.ABNORMAL.equals(refundNotification.getRefundStatus())) {
             refundOrder.setRefundStatus(OnlineOrderRefundStatus.FAIL);
         } else {

+ 21 - 0
ruoyi-line/src/main/java/com/ruoyi/subsidy/service/impl/SubsidyQueueServiceImpl.java

@@ -12,6 +12,9 @@ import com.ruoyi.business.enums.BusinessBillType;
 import com.ruoyi.business.enums.BusinessSourceType;
 import com.ruoyi.business.exception.BusinessExceptionEnum;
 import com.ruoyi.business.service.IBusinessService;
+import com.ruoyi.businessDayBill.domain.bo.BusinessDayBillChangeBo;
+import com.ruoyi.businessDayBill.enums.BusinessDayBillChangeType;
+import com.ruoyi.businessDayBill.service.IBusinessDayBillService;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.BeanCopyUtils;
 import com.ruoyi.common.utils.MathUtils;
@@ -103,6 +106,10 @@ public class SubsidyQueueServiceImpl implements ISubsidyQueueService {
     @Resource
     private ISubsidyModeAutoService subsidyModeAutoService;
 
+    @Lazy
+    @Resource
+    private IBusinessDayBillService businessDayBillService;
+
     /**
      * 查询补贴排队分页
      *
@@ -349,6 +356,20 @@ public class SubsidyQueueServiceImpl implements ISubsidyQueueService {
         order.setPlatformIncome(order.getPayAmount().subtract(order.getBusinessIncome()));
         onlineOrderMapper.updateById(order);
 
+        //用户下单实际收款
+        businessDayBillService.changeBusinessDayBill(BusinessDayBillChangeBo.builder()
+            .businessId(order.getBusinessId())
+            .changeType(BusinessDayBillChangeType.USER_ORDER)
+            .changeAmount(order.getPayAmount())
+            .changeTime(order.getPayTime())
+            .build());
+        //用户下单实际到账
+        businessDayBillService.changeBusinessDayBill(BusinessDayBillChangeBo.builder()
+            .businessId(order.getBusinessId())
+            .changeType(BusinessDayBillChangeType.USER_CREDITED)
+            .changeAmount(order.getBusinessIncome())
+            .changeTime(order.getPayTime())
+            .build());
 
         Long newValidQueueCount = this.validQueueCountAndLock(order.getBusinessId());
         subsidyModeAutoService.switchMode(order.getBusinessId(), newValidQueueCount);

+ 19 - 1
ruoyi-shop/src/main/java/com/ruoyi/shop/business/service/impl/UserBusinessRoleServiceImpl.java

@@ -11,6 +11,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.business.domain.Business;
 import com.ruoyi.business.service.IBusinessService;
 import com.ruoyi.business.service.IBusinessUserRoleConfigService;
+import com.ruoyi.businessDayBill.domain.bo.BusinessDayBillChangeBo;
+import com.ruoyi.businessDayBill.enums.BusinessDayBillChangeType;
+import com.ruoyi.businessDayBill.service.IBusinessDayBillService;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.page.TableDataInfo;
@@ -74,6 +77,10 @@ public class UserBusinessRoleServiceImpl implements IUserBusinessRoleService {
     @Resource
     private IUserService userService;
 
+    @Lazy
+    @Resource
+    private IBusinessDayBillService businessDayBillService;
+
     /**
      * 查询会员在每个店铺中的等级分页
      *
@@ -289,6 +296,7 @@ public class UserBusinessRoleServiceImpl implements IUserBusinessRoleService {
             role.setIntegralAble(subtract);
         }
         this.baseMapper.updateById(role);
+        Date now = new Date();
         //新增积分记录
         UserBusinessIntegralRecordBo recordBo = new UserBusinessIntegralRecordBo();
         recordBo.setUserId(role.getUserId());
@@ -298,7 +306,7 @@ public class UserBusinessRoleServiceImpl implements IUserBusinessRoleService {
         recordBo.setStartScore(integralAble);
         recordBo.setEndScore(role.getIntegralAble());
         recordBo.setBusinessRoleId(role.getId());
-        recordBo.setCreateTime(new Date());
+        recordBo.setCreateTime(now);
         recordBo.setSourceType(bo.getSourceType());
         recordBo.setSourceId(bo.getSourceId());
         recordBo.setSourceCode(bo.getSourceCode());
@@ -313,8 +321,18 @@ public class UserBusinessRoleServiceImpl implements IUserBusinessRoleService {
                 recordBo.setExpireTime(offset);
             }
         }
+
         recordBo.setRemark(bo.getRemark());
         userBusinessIntegralRecordService.insertByBo(recordBo);
+
+        // 修改商家当日账单
+        businessDayBillService.changeBusinessDayBill(BusinessDayBillChangeBo.builder()
+            .businessId(role.getBusinessId())
+            .changeType(IntegralBillType.INNER.equals(billType)?BusinessDayBillChangeType.BUSINESS_GIVE_POINT:BusinessDayBillChangeType.USER_USE_POINT)
+            .changeAmount(integral)
+            .changeTime(now)
+            .build());
+
         return role;
     }
 

+ 31 - 8
ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/impl/ShopOrderServiceImpl.java

@@ -10,6 +10,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.base.revenue.domain.vo.RevenueSharingConfigVo;
 import com.ruoyi.base.revenue.service.IRevenueSharingConfigService;
+import com.ruoyi.businessDayBill.domain.bo.BusinessDayBillChangeBo;
+import com.ruoyi.businessDayBill.enums.BusinessDayBillChangeType;
+import com.ruoyi.businessDayBill.service.IBusinessDayBillService;
 import com.ruoyi.common.enums.CallInterfaceStatus;
 import com.ruoyi.common.utils.MathUtils;
 import com.ruoyi.shop.order.domain.bo.BusinessCountBo;
@@ -82,6 +85,7 @@ public class ShopOrderServiceImpl implements IShopOrderService {
     private final IShopSaleConfigService shopSaleConfigService;
     private final IShopOrderCommentService shopOrderCommentService;
     private final IRevenueSharingConfigService iRevenueSharingConfigService;
+    private final IBusinessDayBillService businessDayBillService;
 
 
     /**
@@ -517,15 +521,18 @@ public class ShopOrderServiceImpl implements IShopOrderService {
         return this.baseMapper.countOrderSale(bo);
     }
 
+    /**
+     * 平台收入结算
+     *
+     * @param order 订单
+     */
     @Override
     public void platformIncomeSettleHandle(ShopOrder order) {
         //TODO 调用第三方接口
 
 
-
-
         Boolean settled = true;
-        order.setPlatformIncomeSettled(settled? CallInterfaceStatus.SUCCESS:CallInterfaceStatus.FAIL);
+        order.setPlatformIncomeSettled(settled ? CallInterfaceStatus.SUCCESS : CallInterfaceStatus.FAIL);
         this.baseMapper.updateById(order);
     }
 
@@ -576,7 +583,7 @@ public class ShopOrderServiceImpl implements IShopOrderService {
                 order.pay(PaymentStatus.PAY_FAIL);
             }
             order.setTransactionId(transactionId);
-            if(PaymentStatus.PAID.equals(order.getPaymentStatus())) {
+            if (PaymentStatus.PAID.equals(order.getPaymentStatus())) {
                 if (ShippingMethod.SELF_PICKUP.equals(order.getShippingMethod())) {
                     BusinessLogisticsConfigVo logisticsConfig = businessLogisticsConfigService.getLogisticsConfig(order.getBusinessId());
                     if (logisticsConfig.getAutoStock()) {
@@ -595,6 +602,22 @@ public class ShopOrderServiceImpl implements IShopOrderService {
                 BigDecimal orderServiceFee = MathUtils.setScale(order.getActualPayment().doubleValue() * orderServiceFeeRatio.doubleValue() / 100);
                 order.setPlatformIncome(orderServiceFee);
                 order.setBusinessIncome(order.getActualPayment().subtract(orderServiceFee));
+
+                //用户下单实际收款
+                businessDayBillService.changeBusinessDayBill(BusinessDayBillChangeBo.builder()
+                    .businessId(order.getBusinessId())
+                    .changeType(BusinessDayBillChangeType.USER_ORDER)
+                    .changeAmount(order.getActualPayment())
+                    .changeTime(order.getPaymentTime())
+                    .build());
+
+                //用户下单实际到账
+                businessDayBillService.changeBusinessDayBill(BusinessDayBillChangeBo.builder()
+                    .businessId(order.getBusinessId())
+                    .changeType(BusinessDayBillChangeType.USER_CREDITED)
+                    .changeAmount(order.getBusinessIncome())
+                    .changeTime(order.getPaymentTime())
+                    .build());
             }
             this.baseMapper.updateById(order);
             return order;
@@ -652,7 +675,7 @@ public class ShopOrderServiceImpl implements IShopOrderService {
         //订单明细结束
         shopOrderDetail.setEnd(true);
         shopOrderDetailMapper.updateById(shopOrderDetail);
-        endOrderDetailSync(order,shopOrderDetail);
+        endOrderDetailSync(order, shopOrderDetail);
 
         //订单自动评论
         if (CommentStatus.UNCOMMENT.equals(shopOrderDetail.getCommentStatus())) {
@@ -662,7 +685,7 @@ public class ShopOrderServiceImpl implements IShopOrderService {
                 shopOrderDetail.setFactCommentTime(new Date());
                 shopOrderDetailMapper.updateById(shopOrderDetail);
                 shopOrderCommentService.autoComment(shopOrderDetail);
-                commentOrderDetailSync(order,shopOrderDetail);
+                commentOrderDetailSync(order, shopOrderDetail);
             }
         }
     }
@@ -673,7 +696,7 @@ public class ShopOrderServiceImpl implements IShopOrderService {
      * @param shopOrderDetail
      */
     @Override
-    public void commentOrderDetailSync(ShopOrder order,ShopOrderDetail shopOrderDetail) {
+    public void commentOrderDetailSync(ShopOrder order, ShopOrderDetail shopOrderDetail) {
         if (order != null) {
             boolean isAllComment = true;
             List<ShopOrderDetail> childOrderList = order.loadOrderDetails(true);
@@ -691,7 +714,7 @@ public class ShopOrderServiceImpl implements IShopOrderService {
     }
 
     @Override
-    public void endOrderDetailSync(ShopOrder order,ShopOrderDetail shopOrderDetail) {
+    public void endOrderDetailSync(ShopOrder order, ShopOrderDetail shopOrderDetail) {
         if (order != null) {
             boolean isAbleEnd = true;
             List<ShopOrderDetail> childOrderList = order.loadOrderDetails(true);

+ 19 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/rights/service/impl/SaleRightsOrderServiceImpl.java

@@ -8,6 +8,9 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.businessDayBill.domain.bo.BusinessDayBillChangeBo;
+import com.ruoyi.businessDayBill.enums.BusinessDayBillChangeType;
+import com.ruoyi.businessDayBill.service.IBusinessDayBillService;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.page.TableDataInfo;
@@ -63,9 +66,11 @@ import com.wechat.pay.java.service.refund.model.RefundNotification;
 import com.wechat.pay.java.service.refund.model.Status;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
@@ -99,6 +104,10 @@ public class SaleRightsOrderServiceImpl implements ISaleRightsOrderService {
     @Autowired
     private NewWxPayService wxPayService;
 
+    @Lazy
+    @Resource
+    private IBusinessDayBillService businessDayBillService;
+
     /**
      * 查询维权单分页
      *
@@ -848,6 +857,16 @@ public class SaleRightsOrderServiceImpl implements ISaleRightsOrderService {
                 .build());
         }
         refundSuccessOperate(saleRightsOrder);
+
+        if (RightsRefundStatus.SUCCESS.equals(saleRightsOrder.getRightsRefundStatus())) {
+            businessDayBillService.changeBusinessDayBill(BusinessDayBillChangeBo.builder()
+                .businessId(saleRightsOrder.getBusinessId())
+                .changeType(BusinessDayBillChangeType.USER_REFUND)
+                .changeAmount(saleRightsOrder.getRefundMoney())
+                .changeTime(new Date())
+                .build());
+        }
+
         //发送消息
         rightsMqService.rightsRefundSuccessSendMsg(saleRightsOrder.getId());
     }