diff --git a/hai-cweb/src/main/java/com/cweb/config/AuthConfig.java b/hai-cweb/src/main/java/com/cweb/config/AuthConfig.java index 2279fb54..7ab3938c 100644 --- a/hai-cweb/src/main/java/com/cweb/config/AuthConfig.java +++ b/hai-cweb/src/main/java/com/cweb/config/AuthConfig.java @@ -126,6 +126,7 @@ public class AuthConfig implements WebMvcConfigurer { .excludePathPatterns("/wechat/*") .excludePathPatterns("/tuanyou/*") .excludePathPatterns("/notify/*") + .excludePathPatterns("/highUserCard/calculateRecharge") .excludePathPatterns("/highOrder/getOrderByOrderNo") .excludePathPatterns("/coupon/getUserCouponByOrderNo") .excludePathPatterns("/activity/getActivityByCoupon") 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 9ae858a3..b98987aa 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 @@ -1214,6 +1214,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()); @@ -1224,7 +1235,7 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService { childOrder.setGoodsId(card.getId()); childOrder.setGoodsName("油卡充值"); childOrder.setGoodsSpecName(card.getCardNo()); - childOrder.setGoodsPrice(createOrderChildModel.getGoodsPrice()); + childOrder.setGoodsPrice(rechargeAmount.add(givePrice)); childOrder.setGoodsActualPrice(childOrder.getGoodsPrice()); childOrder.setSaleCount(createOrderChildModel.getSaleCount()); childOrder.setGiveawayType(false); @@ -1234,7 +1245,7 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService { childOrder.setTotalDeductionPrice(childOrder.getTotalPrice().subtract(childOrder.getTotalActualPrice())); childOrder.setPraiseStatus(0); childOrder.setCreateTime(new Date()); - + childOrder.setExt1(givePrice.toString()); return childOrder; } }