TRX 1 年間 前
コミット
963cc1b8a4

+ 25 - 3
FullCardClient/src/main/java/com/zhongshu/card/client/utils/DateUtils.java

@@ -41,7 +41,7 @@ public class DateUtils {
 
     public final static String patternMM = "MM";
 
-    public final static String patternWx  = "yyyy-MM-dd'T'HH:mm:ssXXX";
+    public final static String patternWx = "yyyy-MM-dd'T'HH:mm:ssXXX";
 
     public final static String unionAuth = "yyyyMMddHHmmss";
 
@@ -505,7 +505,7 @@ public class DateUtils {
     public static Date parseStr2Date(String dateStr, String format) {
         SimpleDateFormat longSdf = new SimpleDateFormat(format);
         try {
-            if(StringUtils.isNotEmpty(dateStr)) {
+            if (StringUtils.isNotEmpty(dateStr)) {
                 return longSdf.parse(dateStr);
             }
         } catch (Exception e) {
@@ -627,6 +627,18 @@ public class DateUtils {
         return endtime.getTime();
     }
 
+    /**
+     * 得到上周最后一天
+     *
+     * @return
+     */
+    public static Long getPreWeekLastTime() {
+        Calendar c = Calendar.getInstance();
+        c.setTimeInMillis(System.currentTimeMillis());
+        c.add(Calendar.DATE, -7);
+        return DateUtils.getWeekEndTime(c.get(Calendar.YEAR), c.get(Calendar.WEEK_OF_YEAR));
+    }
+
     /**
      * 本月的结束时间
      *
@@ -667,6 +679,16 @@ public class DateUtils {
         return c.getTimeInMillis();
     }
 
+    /**
+     * 得到上月最后一天时间
+     *
+     * @return
+     */
+    public static Long getPreMonthLastTime() {
+        Calendar c = Calendar.getInstance();
+        c.add(Calendar.MONTH, -1);
+        return getMonthEndTime(c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 1);
+    }
 
     /**
      * 本年的开始时间
@@ -803,7 +825,7 @@ public class DateUtils {
         return calendar;
     }
 
-    public static List<String> getCurrentIntegralPoint(String pattern){
+    public static List<String> getCurrentIntegralPoint(String pattern) {
         // 获取当前日期
         LocalDate today = LocalDate.now();
 

+ 41 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/paySetting/ProjectMainPaySettingService.java

@@ -3,7 +3,9 @@ package com.zhongshu.card.server.core.service.paySetting;
 import com.github.microservice.net.ResultContent;
 import com.github.microservice.types.payment.PaymentType;
 import com.zhongshu.card.client.model.paySetting.paySetting.*;
+import com.zhongshu.card.client.type.paySetting.RegularType;
 import com.zhongshu.card.client.type.paySetting.SettlementRulesType;
+import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.dao.projectAbout.PayShareListDao;
 import com.zhongshu.card.server.core.dao.projectAbout.ProjectMainPaySettingDao;
@@ -24,6 +26,7 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -164,6 +167,44 @@ public class ProjectMainPaySettingService extends SuperService {
         return null;
     }
 
+    /**
+     * 得到结算定时任务的结算时间
+     *
+     * @param projectOid
+     * @param paymentType
+     * @return
+     */
+    public Long getCurrentRunTime(String projectOid, PaymentType paymentType) {
+        Long time = System.currentTimeMillis();
+        if (StringUtils.isNotEmpty(projectOid) && paymentType != null) {
+            ProjectMainPaySetting entity = getProjectMainPaySetting(projectOid, paymentType);
+            if (ObjectUtils.isNotEmpty(entity)) {
+                SettlementRulesType settlementRulesType = entity.getSettlementRulesType();
+                if (settlementRulesType == SettlementRulesType.Dn) {
+                    // 结算N天前的
+                    Integer days = entity.getDays();
+                    Calendar c = Calendar.getInstance();
+                    c.setTimeInMillis(System.currentTimeMillis());
+                    c.add(Calendar.DATE, days * -1);
+                    time = c.getTimeInMillis();
+                } else if (settlementRulesType == SettlementRulesType.Regular) {
+                    RegularType regularType = entity.getRegularType();
+                    if (regularType == RegularType.Day) {
+                        Calendar c = Calendar.getInstance();
+                        c.setTimeInMillis(System.currentTimeMillis());
+                        c.add(Calendar.DATE, -1);
+                        time = c.getTimeInMillis();
+                    } else if (regularType == RegularType.Week) {
+                        time = DateUtils.getPreWeekLastTime();
+                    } else if (regularType == RegularType.Month) {
+                        time = DateUtils.getPreMonthLastTime();
+                    }
+                }
+            }
+        }
+        return time;
+    }
+
     //---------------------------项目上的灵活 分账配置 start -----------------------
 
     /**

+ 24 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/PayCallService.java

@@ -15,6 +15,7 @@ import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.client.utils.PayExceptionToShowUtil;
 import com.zhongshu.card.server.core.dao.payment.ExpenseFlowDao;
 import com.zhongshu.card.server.core.dao.payment.PaymentProcessDao;
+import com.zhongshu.card.server.core.domain.paySetting.ProjectMainPaySetting;
 import com.zhongshu.card.server.core.domain.payment.ExpenseFlow;
 import com.zhongshu.card.server.core.domain.payment.PaymentProcess;
 import com.zhongshu.card.server.core.domain.schedule.ScheduleTaskConfig;
@@ -24,6 +25,7 @@ import com.zhongshu.card.server.core.service.pay.BalancePayService;
 import com.zhongshu.card.server.core.service.pay.ChinaumsSenselessPayService;
 import com.zhongshu.card.server.core.service.pay.SettleService;
 import com.zhongshu.card.server.core.service.paySetting.PayOrderSettingService;
+import com.zhongshu.card.server.core.service.paySetting.ProjectMainPaySettingService;
 import com.zhongshu.card.server.core.service.user.OperationLogsService;
 import com.zhongshu.card.server.core.util.NextNoUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -72,6 +74,9 @@ public class PayCallService extends SuperService {
     @Autowired
     private ChinaumsSenselessPayService chinaumsSenselessPayService;
 
+    @Autowired
+    private ProjectMainPaySettingService projectMainPaySettingService;
+
     /**
      * 统一调用支付服务
      *
@@ -308,6 +313,23 @@ public class PayCallService extends SuperService {
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 银联云闪付支付完成
+     *
+     * @param paymentNo
+     * @return
+     */
+    public ResultContent unionFrictionlessPayFinish(String paymentNo) {
+        if (StringUtils.isEmpty(paymentNo)) {
+            return ResultContent.buildFail("paymentNo为空");
+        }
+        ExpenseFlow entity = expenseFlowDao.findTopByPaymentNo(paymentNo);
+        if (ObjectUtils.isNotEmpty(entity)) {
+
+        }
+        return ResultContent.buildSuccess();
+    }
+
     /**
      * 订单是否在支付中
      *
@@ -413,7 +435,8 @@ public class PayCallService extends SuperService {
         PaymentType paymentType = PaymentType.valueOf(data.get("paymentType").toString());
         if (StringUtils.isNotEmpty(projectOid) && paymentType != null) {
             String remark = "定时结算";
-            Long endTime = System.currentTimeMillis();
+            Long endTime = projectMainPaySettingService.getCurrentRunTime(projectOid, paymentType);
+
             // 项目包含的机构列表
             ResultContent<List<OrganizationMiniModel>> content = projectBindOrgService.getProjectOrgList(projectOid);
             if (content.isSuccess()) {

+ 9 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/test/Test.java

@@ -2,6 +2,7 @@ package com.zhongshu.card.server.core.test;
 
 import cn.hutool.core.lang.Snowflake;
 import cn.hutool.json.JSONUtil;
+import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.server.core.util.CommonUtil;
 import com.zhongshu.card.server.core.util.ValidateResult;
 import com.zhongshu.card.server.core.util.ValidateUtils;
@@ -10,6 +11,7 @@ import groovy.lang.GroovyShell;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.Base64;
+import java.util.Calendar;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -55,5 +57,12 @@ public class Test {
         String phone = "766";
         System.out.println(CommonUtil.getPhoneLast4(phone));
 
+        Calendar calendar = Calendar.getInstance();
+
+        System.out.println("上周的最后一天是:" + DateUtils.paresTime(DateUtils.getPreWeekLastTime(), DateUtils.FORMAT_LONG));
+
+
+        System.out.println("上月的最后一天是:" + DateUtils.paresTime(DateUtils.getPreMonthLastTime(), DateUtils.FORMAT_LONG));
+
     }
 }