diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarCallBackController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarCallBackController.java index 1539d285d..dce9a0e19 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarCallBackController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarCallBackController.java @@ -11,6 +11,7 @@ import com.iformall.enums.EnumCarVendor; import com.iformall.enums.EnumCouponSendSendType; import com.iformall.enums.EnumETCPCode; import com.iformall.service.*; +import com.iformall.utils.DateUtils; import com.iformall.utils.ETCPUtil; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -439,19 +440,24 @@ public class WxCarCallBackController extends BaseController { WxCarPayRecord query = new WxCarPayRecord(); query.setSynId(orderId); - query.setFee(fee); - if(feeTime != null) { - query.setFeeTime(feeTime); - } - // 缴费时间在15分钟以内,更新之前的数据, ETCP会把之前的缴费自动退款 PageInfo page = wxCarPayRecordService.findCarPayListByPage(query,1,2); if(page != null && page.getList().size() > 0){ + if(page.getList().size() >= 2){ wxCarPayRecordService.saveOrUpdate(record); } else { WxCarPayRecord r = page.getList().get(0); - record.setId(r.getId()); - wxCarPayRecordService.saveOrUpdate(record); + if(r.getFeeTime() == null) { + // 无缴费信息, 更新 + record.setId(r.getId()); + wxCarPayRecordService.saveOrUpdate(record); + } else { + // 缴费时间在15分钟以内,更新之前的数据, ETCP会把之前的缴费自动退款 + if(DateUtils.isInDate15Mins(feeTime, r.getFeeTime())) { + record.setId(r.getId()); + } + wxCarPayRecordService.saveOrUpdate(record); + } } } else { wxCarPayRecordService.saveOrUpdate(record); diff --git a/mallinkService/src/main/java/com/iformall/utils/DateUtils.java b/mallinkService/src/main/java/com/iformall/utils/DateUtils.java index e6ca5c841..b30d422a9 100755 --- a/mallinkService/src/main/java/com/iformall/utils/DateUtils.java +++ b/mallinkService/src/main/java/com/iformall/utils/DateUtils.java @@ -957,6 +957,27 @@ public class DateUtils { } } + /** + * 判断时间是否在时间段内 + * @param date + * @param curDate + * @return + */ + public static boolean isInDate15Mins(Date date, Date curDate) { + Calendar cal = Calendar.getInstance(); + cal.setTime(curDate); + cal.add(Calendar.MINUTE, -15); + Date timeStart = cal.getTime(); + cal.add(Calendar.MINUTE, 15); + Date timeEnd = cal.getTime(); + + if (date.after(timeStart) && date.before(timeEnd)) { + return true; + } else { + return false; + } + } + /** * 获取当前月的第一天 * @return