java110 пре 4 година
родитељ
комит
ee0df7b41e

+ 9 - 1
service-api/src/main/java/com/java110/api/bmo/fee/impl/FeeBMOImpl.java

@@ -295,6 +295,10 @@ public class FeeBMOImpl extends ApiBaseBMO implements IFeeBMO {
             endCalender.add(Calendar.MONTH, Integer.parseInt(paramInJson.getString("cycles")));
         }
         feeInfo.setEndTime(endCalender.getTime());
+        //判断 结束时间 是否大于 费用项 结束时间,这里 容错一下,如果 费用结束时间大于 费用项结束时间 30天 走报错 属于多缴费
+        if (feeInfo.getEndTime().getTime() - feeInfo.getConfigEndTime().getTime() > 30 * 24 * 60 * 60 * 1000) {
+            throw new IllegalArgumentException("缴费超过了 费用项结束时间");
+        }
         Map feeMap = BeanConvertUtil.beanCovertMap(feeInfo);
         feeMap.put("startTime", DateUtil.getFormatTimeString(feeInfo.getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
         feeMap.put("endTime", DateUtil.getFormatTimeString(feeInfo.getEndTime(), DateUtil.DATE_FORMATE_STRING_A));
@@ -372,7 +376,7 @@ public class FeeBMOImpl extends ApiBaseBMO implements IFeeBMO {
         if (feeDtos == null || feeDtos.size() != 1) {
             throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "查询费用信息失败,未查到数据或查到多条数据");
         }
-        feeDto = feeDtos.get(0);
+
         paramInJson.put("feeInfo", feeDto);
         businessFeeDetail.put("startTime", DateUtil.getFormatTimeString(feeDto.getEndTime(), DateUtil.DATE_FORMATE_STRING_A));
         Date endTime = feeDto.getEndTime();
@@ -436,6 +440,10 @@ public class FeeBMOImpl extends ApiBaseBMO implements IFeeBMO {
         endCalender.setTime(endTime);
         endCalender.add(Calendar.MONTH, Integer.parseInt(paramInJson.getString("cycles")));
         feeInfo.setEndTime(endCalender.getTime());
+        //判断 结束时间 是否大于 费用项 结束时间,这里 容错一下,如果 费用结束时间大于 费用项结束时间 30天 走报错 属于多缴费
+        if (feeInfo.getEndTime().getTime() - feeInfo.getConfigEndTime().getTime() > 30 * 24 * 60 * 60 * 1000) {
+            throw new IllegalArgumentException("缴费超过了 费用项结束时间");
+        }
         Map feeMap = BeanConvertUtil.beanCovertMap(feeInfo);
         feeMap.put("startTime", DateUtil.getFormatTimeString(feeInfo.getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
         feeMap.put("endTime", DateUtil.getFormatTimeString(feeInfo.getEndTime(), DateUtil.DATE_FORMATE_STRING_A));

+ 7 - 2
service-fee/src/main/java/com/java110/fee/listener/fee/UpdateFeeInfoListener.java

@@ -15,7 +15,6 @@ import com.java110.utils.constant.*;
 import com.java110.utils.exception.ListenerExecuteException;
 import com.java110.utils.lock.DistributedLock;
 import com.java110.utils.util.Assert;
-import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -186,7 +185,13 @@ public class UpdateFeeInfoListener extends AbstractFeeBusinessServiceDataFlowLis
 
                     // 周期性收费、缴费后,到期日期在费用项终止日期后,则设置缴费状态结束,设置结束日期为费用项终止日期
                     if (FeeFlagTypeConstant.CYCLE.equals(feeInfo.get(0).get("feeFlag"))) {
-                        if (((Date) businessFeeInfo.get("endTime")).after((Date) feeInfo.get(0).get("configEndTime"))) {
+                        //这里 容错五天时间
+                        Date configEndTime = (Date) feeInfo.get(0).get("configEndTime");
+                        Calendar calendar = Calendar.getInstance();
+                        calendar.setTime(configEndTime);
+                        calendar.add(Calendar.DAY_OF_MONTH, -5);
+                        configEndTime = calendar.getTime();
+                        if (((Date) businessFeeInfo.get("endTime")).after(configEndTime)) {
                             businessFeeInfo.put("state", FeeStateConstant.END);
                             businessFeeInfo.put("end_time", feeInfo.get(0).get("configEndTime"));
                         }