Explorar o código

优化临时费用创建bug

wuxw %!s(int64=2) %!d(string=hai) anos
pai
achega
9c54808964

+ 6 - 22
service-fee/src/main/java/com/java110/fee/cmd/fee/PayBatchFeeCmd.java

@@ -291,18 +291,15 @@ public class PayBatchFeeCmd extends Cmd {
                 receivedAmount = receivedAmount.add(new BigDecimal(payFeeDataDto.getAccountAmount()));
             }
             cycles = receivedAmount.divide(feePrice, 4, BigDecimal.ROUND_HALF_EVEN);
-            endCalender = getTargetEndTime(endCalender, cycles.doubleValue());
-            targetEndTime = endCalender.getTime();
+            targetEndTime = computeFeeSMOImpl.getTargetEndTime(cycles.doubleValue(),endCalender.getTime());
             receivableAmount = payFeeDataDto.getReceivedAmount();
             //处理 可能还存在 实收手工减免的情况
         } else if (PayFeeDataDto.TEMP_CYCLE_CUSTOM_END_TIME.equals(payFeeDataDto.getTempCycle())) { //todo 这里按缴费结束时间缴费
             String custEndTime = payFeeDataDto.getCustEndTime();
-            Date endDates = DateUtil.getDateFromStringB(custEndTime);
-            Calendar c = Calendar.getInstance();
-            c.setTime(endDates);
-            c.add(Calendar.DAY_OF_MONTH, 1);
-            endDates = c.getTime();//这是明天
-            targetEndTime = endDates;
+            if(!custEndTime.contains(":")){
+                custEndTime += " 23:59:59";
+            }
+            targetEndTime = DateUtil.getDateFromStringA(custEndTime);
             BigDecimal receivedAmount1 = new BigDecimal(Double.parseDouble(payFeeDataDto.getReceivedAmount()));
             cycles = receivedAmount1.divide(feePrice, 4, BigDecimal.ROUND_HALF_EVEN);
             receivableAmount = payFeeDataDto.getReceivedAmount();
@@ -330,20 +327,7 @@ public class PayBatchFeeCmd extends Cmd {
     }
 
 
-    private static Calendar getTargetEndTime(Calendar endCalender, Double cycles) {
-        if (StringUtil.isInteger(cycles.toString())) {
-            endCalender.add(Calendar.MONTH, new Double(cycles).intValue());
-            return endCalender;
-        }
-        if (cycles >= 1) {
-            endCalender.add(Calendar.MONTH, new Double(Math.floor(cycles)).intValue());
-            cycles = cycles - Math.floor(cycles);
-        }
-        int futureDay = endCalender.getActualMaximum(Calendar.DAY_OF_MONTH);
-        int hours = new Double(cycles * futureDay * 24).intValue();
-        endCalender.add(Calendar.HOUR, hours);
-        return endCalender;
-    }
+
 
 
     private void ifHasAccount(JSONObject reqJson, List<PayFeeDataDto> feeDataDtos) {

+ 2 - 2
service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeCmd.java

@@ -777,7 +777,7 @@ public class PayFeeCmd extends Cmd {
         Map feePriceAll = computeFeeSMOImpl.getFeePrice(feeDto);
         BigDecimal feePrice = new BigDecimal(feePriceAll.get("feePrice").toString());
 
-        if ("-101".equals(paramInJson.getString("cycles"))) { // todo 自定义金额交费
+        if (PayFeeDataDto.TEMP_CYCLE_CUSTOM_AMOUNT.equals(paramInJson.getString("cycles"))) { // todo 自定义金额交费
             Date endTime = feeDto.getEndTime();
             Calendar endCalender = Calendar.getInstance();
             endCalender.setTime(endTime);
@@ -796,7 +796,7 @@ public class PayFeeCmd extends Cmd {
             if (businessFeeDetail.getDoubleValue("receivableAmount") < receivedAmount.doubleValue()) {
                 businessFeeDetail.put("receivableAmount", receivedAmount.doubleValue());
             }
-        } else if ("-103".equals(paramInJson.getString("cycles"))) { //todo 这里按缴费结束时间缴费
+        } else if (PayFeeDataDto.TEMP_CYCLE_CUSTOM_END_TIME.equals(paramInJson.getString("cycles"))) { //todo 这里按缴费结束时间缴费
             String custEndTime = paramInJson.getString("custEndTime");
             if(!custEndTime.contains(":")){
                 custEndTime += " 23:59:59";

+ 1 - 1
service-fee/src/main/java/com/java110/fee/cmd/fee/PayOweFeeCmd.java

@@ -151,7 +151,7 @@ public class PayOweFeeCmd extends Cmd {
         userDto.setUserId(userId);
         List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
         Assert.listOnlyOne(userDtos, "用户未登录");
-
+        userDto = userDtos.get(0);
         String payOrderId = paramObj.getString("payOrderId");
 
         JSONArray fees = paramObj.getJSONArray("fees");

+ 2 - 2
service-fee/src/main/java/com/java110/fee/cmd/returnPayFee/UpdateReturnPayFeeCmd.java

@@ -174,8 +174,8 @@ public class UpdateReturnPayFeeCmd extends Cmd {
         Assert.hasKeyAndValue(reqJson, "feeId", "feeId不能为空");
         if (reqJson.containsKey("cycles")) {
             double cycles = reqJson.getDouble("cycles");
-            if (cycles < 0) {
-                throw new IllegalArgumentException("退费周期必须负数");// 这里必须传入负数,否则费用自动相加不会退费
+            if (cycles >= 0) {
+                throw new CmdException("退费周期必须负数");// 这里必须传入负数,否则费用自动相加不会退费
             }
         }
         FeeDetailDto feeDetailDto = new FeeDetailDto();