| | |
| | | import com.java110.utils.exception.CmdException; |
| | | import com.java110.utils.exception.ListenerExecuteException; |
| | | import com.java110.utils.util.Assert; |
| | | import com.java110.utils.util.BeanConvertUtil; |
| | | import com.java110.utils.util.DateUtil; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import com.java110.core.log.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.http.ResponseEntity; |
| | |
| | | throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "查询费用信息失败,未查到数据或查到多条数据"); |
| | | } |
| | | feeDto = feeDtos.get(0); |
| | | |
| | | reqJson.put("feeTypeCd", feeDto.getFeeTypeCd()); |
| | | reqJson.put("feeId", feeDto.getFeeId()); |
| | | Map feePriceAll = computeFeeSMOImpl.getFeePrice(feeDto); |
| | | BigDecimal receivableAmount = new BigDecimal(feePriceAll.get("feePrice").toString()); |
| | | BigDecimal cycles = new BigDecimal(Double.parseDouble(reqJson.getString("cycles"))); |
| | |
| | | receivedAmount = 0.0; |
| | | } |
| | | paramOut.put("receivedAmount", receivedAmount); |
| | | |
| | | ResponseEntity<String> responseEntity = new ResponseEntity<>(paramOut.toJSONString(), HttpStatus.OK); |
| | | reqJson.putAll(paramOut); |
| | | CommonCache.setValue("payFeePre" + paramOut.getString("oId"), reqJson.toJSONString(), 24 * 60 * 60); |
| | | cmdDataFlowContext.setResponseEntity(responseEntity); |
| | | } |
| | | |
| | | /** |
| | | * 考虑账户抵消 |
| | | * 考虑账户抵消 |
| | | * |
| | | * @param reqJson |
| | | */ |
| | | private double judgeAccount(JSONObject reqJson) { |
| | | if(!reqJson.containsKey("deductionAmount")){ |
| | | reqJson.put("deductionAmount",0.0); |
| | | if (!reqJson.containsKey("deductionAmount")) { |
| | | reqJson.put("deductionAmount", 0.0); |
| | | return 0.0; |
| | | } |
| | | |
| | | double deductionAmount = reqJson.getDouble("deductionAmount"); |
| | | if(deductionAmount <= 0){ |
| | | reqJson.put("deductionAmount",0.0); |
| | | if (deductionAmount <= 0) { |
| | | reqJson.put("deductionAmount", 0.0); |
| | | return 0.0; |
| | | } |
| | | |
| | | if(!reqJson.containsKey("selectUserAccount")){ |
| | | reqJson.put("deductionAmount",0.0); |
| | | if (!reqJson.containsKey("selectUserAccount")) { |
| | | reqJson.put("deductionAmount", 0.0); |
| | | return 0.0; |
| | | } |
| | | |
| | | JSONArray selectUserAccount = reqJson.getJSONArray("selectUserAccount"); |
| | | if(selectUserAccount == null || selectUserAccount.size() <1){ |
| | | reqJson.put("deductionAmount",0.0); |
| | | if (selectUserAccount == null || selectUserAccount.size() < 1) { |
| | | reqJson.put("deductionAmount", 0.0); |
| | | return 0.0; |
| | | } |
| | | List<String> acctIds = new ArrayList<>(); |
| | | for(int userAccountIndex = 0 ;userAccountIndex < selectUserAccount.size(); userAccountIndex++){ |
| | | for (int userAccountIndex = 0; userAccountIndex < selectUserAccount.size(); userAccountIndex++) { |
| | | acctIds.add(selectUserAccount.getJSONObject(userAccountIndex).getString("acctId")); |
| | | } |
| | | |
| | |
| | | accountDto.setAcctIds(acctIds.toArray(new String[acctIds.size()])); |
| | | List<AccountDto> accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto); |
| | | |
| | | if(accountDtos == null || accountDtos.size() < 1){ |
| | | reqJson.put("deductionAmount",0.0); |
| | | if (accountDtos == null || accountDtos.size() < 1) { |
| | | reqJson.put("deductionAmount", 0.0); |
| | | return 0.0; |
| | | } |
| | | |
| | | BigDecimal totalAccountAmount = new BigDecimal(0); |
| | | for(AccountDto tmpAccountDto: accountDtos){ |
| | | for (AccountDto tmpAccountDto : accountDtos) { |
| | | totalAccountAmount = totalAccountAmount.add(new BigDecimal(tmpAccountDto.getAmount())); |
| | | } |
| | | |
| | | deductionAmount = totalAccountAmount.subtract(new BigDecimal(deductionAmount)).doubleValue(); |
| | | if(deductionAmount < 0){ |
| | | reqJson.put("deductionAmount",totalAccountAmount.doubleValue()); |
| | | reqJson.put("selectUserAccount",accountDtos); |
| | | double tmpDeductionAmount = totalAccountAmount.subtract(new BigDecimal(deductionAmount)).doubleValue(); |
| | | if (tmpDeductionAmount < 0) { |
| | | reqJson.put("deductionAmount", totalAccountAmount.doubleValue()); |
| | | reqJson.put("selectUserAccount", BeanConvertUtil.beanCovertJSONArray(accountDtos)); |
| | | return totalAccountAmount.doubleValue(); |
| | | } |
| | | reqJson.put("deductionAmount",deductionAmount); |
| | | reqJson.put("selectUserAccount",accountDtos); |
| | | reqJson.put("deductionAmount", deductionAmount); |
| | | reqJson.put("selectUserAccount", BeanConvertUtil.beanCovertJSONArray(accountDtos)); |
| | | return deductionAmount; |
| | | } |
| | | |
| | |
| | | |
| | | if (couponList == null || couponList.size() < 1) { |
| | | paramObj.put("couponPrice", couponPrice.doubleValue()); |
| | | paramObj.put("couponUserDtos", new ArrayList<CouponUserDto>()); //这里考虑空 |
| | | paramObj.put("couponUserDtos", new JSONArray()); //这里考虑空 |
| | | return couponPrice.doubleValue(); |
| | | } |
| | | for (int couponIndex = 0; couponIndex < couponList.size(); couponIndex++) { |
| | |
| | | for (CouponUserDto couponUser : couponUserDtos) { |
| | | //不计算已过期购物券金额 |
| | | if (couponUser.getEndTime().compareTo(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B)) >= 0) { |
| | | couponPrice.add(new BigDecimal(Double.parseDouble(couponUser.getActualPrice()))); |
| | | couponPrice = couponPrice.add(new BigDecimal(Double.parseDouble(couponUser.getActualPrice()))); |
| | | } |
| | | } |
| | | paramObj.put("couponPrice", couponPrice.doubleValue()); |
| | | paramObj.put("couponUserDtos", couponUserDtos); |
| | | paramObj.put("couponUserDtos", BeanConvertUtil.beanCovertJSONArray(couponUserDtos)); |
| | | return couponPrice.doubleValue(); |
| | | } |
| | | |
| | |
| | | List<ComputeDiscountDto> computeDiscountDtos = feeDiscountInnerServiceSMOImpl.computeDiscount(feeDetailDto); |
| | | |
| | | if (computeDiscountDtos == null || computeDiscountDtos.size() < 1) { |
| | | paramObj.put("discountPrice",0.0); |
| | | paramObj.put("discountPrice", 0.0); |
| | | return 0.0; |
| | | } |
| | | BigDecimal discountPrice = new BigDecimal(0); |
| | | for (ComputeDiscountDto computeDiscountDto : computeDiscountDtos) { |
| | | discountPrice = discountPrice.add(new BigDecimal(computeDiscountDto.getDiscountPrice())); |
| | | } |
| | | paramObj.put("discountPrice",discountPrice.doubleValue()); |
| | | paramObj.put("computeDiscountDtos", computeDiscountDtos); |
| | | paramObj.put("discountPrice", discountPrice.doubleValue()); |
| | | paramObj.put("computeDiscountDtos", BeanConvertUtil.beanCovertJSONArray(computeDiscountDtos)); |
| | | return discountPrice.doubleValue(); |
| | | } |
| | | } |