diff --git a/hai-cweb/src/main/java/com/cweb/controller/HighUserCardController.java b/hai-cweb/src/main/java/com/cweb/controller/HighUserCardController.java index 55f80eae..38838d5a 100644 --- a/hai-cweb/src/main/java/com/cweb/controller/HighUserCardController.java +++ b/hai-cweb/src/main/java/com/cweb/controller/HighUserCardController.java @@ -10,10 +10,7 @@ import com.hai.common.security.UserCenter; import com.hai.common.utils.RedisUtil; import com.hai.common.utils.ResponseMsgUtil; import com.hai.config.HuiLianTongUnionCardConfig; -import com.hai.entity.HighFleetOilCard; -import com.hai.entity.HighOilCard; -import com.hai.entity.HighUser; -import com.hai.entity.HighUserCard; +import com.hai.entity.*; import com.hai.enum_type.UserCardType; import com.hai.model.HighUserModel; import com.hai.model.ResponseData; @@ -30,6 +27,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; @Controller @@ -60,6 +58,49 @@ public class HighUserCardController { @Resource private HighOilCardService oilCardService; + @Resource + private SecConfigService secConfigService; + + @RequestMapping(value = "/calculateRecharge", method = RequestMethod.POST) + @ResponseBody + @ApiOperation(value = "计算充值金额") + public ResponseData calculateRecharge(@RequestBody JSONObject body, HttpServletRequest request) { + try { + + if (body == null || body.getBigDecimal("rechargeAmount") == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); + } + + // 充值赠送比例 + SecConfig rechargeRatio = secConfigService.findByCodeType("OIL_CARD_RECHARGE_RATIO"); + + // 充值金额 + BigDecimal rechargeAmount = body.getBigDecimal("rechargeAmount"); + + // 赠送比例 + BigDecimal ratio = new BigDecimal("0"); + + // 赠送金额 + BigDecimal givePrice = new BigDecimal("0"); + + if (rechargeRatio != null) { + ratio = new BigDecimal(rechargeRatio.getCodeValue()).divide(new BigDecimal("100")); + givePrice = body.getBigDecimal("rechargeAmount").multiply(ratio).setScale(2, RoundingMode.DOWN); + } + + Map param = new HashMap<>(); + param.put("rechargeAmount", rechargeAmount); + param.put("rechargeRatio", ratio.multiply(new BigDecimal("100"))); + param.put("givePrice", givePrice); + param.put("rechargeAmountTotal", rechargeAmount.add(givePrice)); + return ResponseMsgUtil.success(param); + + } catch (Exception e) { + log.error("HighUserCardController --> calculateRecharge() error!", e); + return ResponseMsgUtil.exception(e); + } + } + @RequestMapping(value = "/bindCard", method = RequestMethod.POST) @ResponseBody @ApiOperation(value = "绑卡") diff --git a/hai-service/src/main/java/com/hai/order/service/impl/OrderCreateHandleServiceImpl.java b/hai-service/src/main/java/com/hai/order/service/impl/OrderCreateHandleServiceImpl.java index b898954e..93008776 100644 --- a/hai-service/src/main/java/com/hai/order/service/impl/OrderCreateHandleServiceImpl.java +++ b/hai-service/src/main/java/com/hai/order/service/impl/OrderCreateHandleServiceImpl.java @@ -1224,6 +1224,17 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的油卡"); } + // 充值金额 + BigDecimal rechargeAmount = createOrderChildModel.getGoodsPrice(); + // 赠送金额 + BigDecimal givePrice = new BigDecimal("0"); + + SecConfig rechargeRatio = secConfigService.findByCodeType("OIL_CARD_RECHARGE_RATIO"); + if (rechargeRatio != null && StringUtils.isNotBlank(rechargeRatio.getCodeValue())) { + BigDecimal ratio = new BigDecimal(rechargeRatio.getCodeValue()).divide(new BigDecimal("100")); + givePrice = rechargeAmount.multiply(ratio).setScale(2, RoundingMode.DOWN); + } + HighChildOrder childOrder = new HighChildOrder(); childOrder.setOrderNo(order.getOrderNo()); childOrder.setMemId(order.getMemId()); @@ -1234,17 +1245,17 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService { childOrder.setGoodsId(card.getId()); childOrder.setGoodsName("油卡充值"); childOrder.setGoodsSpecName(card.getCardNo()); - childOrder.setGoodsPrice(createOrderChildModel.getGoodsPrice()); - childOrder.setGoodsActualPrice(childOrder.getGoodsPrice()); + childOrder.setGoodsPrice(rechargeAmount.add(givePrice)); + childOrder.setGoodsActualPrice(createOrderChildModel.getGoodsPrice()); childOrder.setSaleCount(createOrderChildModel.getSaleCount()); childOrder.setGiveawayType(false); childOrder.setChildOrderStatus(OrderChildStatus.STATUS1.getNumber()); childOrder.setTotalPrice(childOrder.getGoodsPrice()); - childOrder.setTotalActualPrice(childOrder.getGoodsPrice()); - childOrder.setTotalDeductionPrice(childOrder.getTotalPrice().subtract(childOrder.getTotalActualPrice())); + childOrder.setTotalActualPrice(createOrderChildModel.getGoodsPrice()); + childOrder.setTotalDeductionPrice(createOrderChildModel.getGoodsPrice().subtract(childOrder.getTotalActualPrice())); childOrder.setPraiseStatus(0); childOrder.setCreateTime(new Date()); - + childOrder.setExt1(givePrice.toString()); return childOrder; } }