|
@@ -50,7 +50,7 @@ public class PayOrderController {
|
|
|
AppUserInfo appUserInfo =new AppUserInfo(); //查询客户信息传递参数
|
|
|
PayOrder payOrder = new PayOrder(); //生成订单参数
|
|
|
if(StringUtils.isNotBlank(payOrderRequest.getUserType()) && StringUtils.isNotBlank(payOrderRequest.getOpenId()) && StringUtils.isNotBlank(payOrderRequest.getOilName()) &&
|
|
|
- StringUtils.isNotBlank(payOrderRequest.getOilGun()) && payOrderRequest.getReceivableAmt() !=null && StringUtils.isNotBlank(payOrderRequest.getOrderType())){
|
|
|
+ StringUtils.isNotBlank(payOrderRequest.getOilGun()) && payOrderRequest.getReceivableAmt() !=null){
|
|
|
appUserInfo.setUserType(payOrderRequest.getUserType());
|
|
|
switch (payOrderRequest.getUserType()){
|
|
|
case "1": //小程序
|
|
@@ -87,13 +87,16 @@ public class PayOrderController {
|
|
|
payOrder.setCreatedDate(new Timestamp(new Date().getTime())); //创建时间
|
|
|
payOrder.setOrderType(payOrderRequest.getOrderType()); //订单类型
|
|
|
payOrder.setOilGun(payOrderRequest.getOilGun()); //油枪号
|
|
|
- payOrder.setReceivableAmt(payOrderRequest.getReceivableAmt()); //订单应收金额
|
|
|
+ payOrder.setReceivableAmt(Double.valueOf(payOrderRequest.getReceivableAmt())); //订单应收金额
|
|
|
String oilName =payOrderRequest.getOilName();
|
|
|
//获取该油品所属哪一类
|
|
|
Oil oil = new Oil();
|
|
|
oil.setOilName(oilName);
|
|
|
Oil oilInfo = sysDictDataService.selectOilType(oil);
|
|
|
payOrder.setOilType(oilInfo.getOilsType()); //油品类型
|
|
|
+ String orderType = oilInfo.getOilsType(); //获取订单类型
|
|
|
+ logger.info("订单类型:" + orderType);
|
|
|
+ payOrder.setOrderType(orderType);
|
|
|
payOrderRequest.setCardOilsType(oilInfo.getOilsType()); //电子卡类型;注:用于获取客户电子卡参数查询
|
|
|
payOrder.setOilName(oilName); //油品名称
|
|
|
StationInfo stationInfo = new StationInfo();
|
|
@@ -125,14 +128,25 @@ public class PayOrderController {
|
|
|
}else {
|
|
|
payOrder.setOilPersonnel("");
|
|
|
}
|
|
|
- String orderType = payOrderRequest.getOrderType(); //获取订单类型
|
|
|
- logger.info("订单类型:" + orderType);
|
|
|
- if(orderType.equals("1")){ //订单类型是油品时计算
|
|
|
+ if(orderType.equals("3")){ //订单类型是油品时计算
|
|
|
+ payOrder.setAmt(Double.valueOf(payOrderRequest.getReceivableAmt())); //非油品金额
|
|
|
+ payOrder.setDiscountAmt(Double.valueOf(0)); //优惠金额
|
|
|
+ payOrder.setOilPirce(payOrderRequest.getReceivableAmt().toString()); //非油品价格
|
|
|
+ payOrder.setOrderLiters("0");
|
|
|
+ resultMap.put("discountAmt", "0"); //优惠价格
|
|
|
+ resultMap.put("amt", payOrderRequest.getReceivableAmt()); //实收价格
|
|
|
+ resultMap.put("receivableAmt", payOrderRequest.getReceivableAmt()); //应收价格
|
|
|
+ resultMap.put("oilLiters", "0");
|
|
|
+ resultMap.put("discountPrice", "0");
|
|
|
+ resultMap.put("ordNo", ordNo);
|
|
|
+ payOrderMapper.insertSelective(payOrder);
|
|
|
+ }else {
|
|
|
PayOrderResultInfo payOrderResultInfo = this.calculateAmt(payOrderRequest); //计算订单金额 价格 加油升数 等等
|
|
|
payOrder.setOilPirce(payOrderResultInfo.getOilPrice());
|
|
|
payOrder.setOrderLiters(payOrderResultInfo.getOilLiters());
|
|
|
payOrder.setDiscountAmt(Double.valueOf(payOrderResultInfo.getDiscountAmt()));
|
|
|
payOrder.setAmt(Double.valueOf(payOrderResultInfo.getAmt()));
|
|
|
+ resultMap.put("cardEnabledFlag", payOrderResultInfo.getCardEnabledFlag());
|
|
|
resultMap.put("discountAmt", payOrderResultInfo.getDiscountAmt()); //优惠价格
|
|
|
resultMap.put("amt", payOrderResultInfo.getAmt()); //实收价格
|
|
|
resultMap.put("receivableAmt", payOrderResultInfo.getReceivableAmt()); //应收价格
|
|
@@ -144,18 +158,6 @@ public class PayOrderController {
|
|
|
resultMap.put("ordNo", ordNo);
|
|
|
logger.info("返回前端的结果:" +resultMap.toString());
|
|
|
payOrderMapper.insertSelective(payOrder);
|
|
|
- }else {
|
|
|
- payOrder.setAmt(Double.valueOf(payOrderRequest.getReceivableAmt())); //非油品金额
|
|
|
- payOrder.setDiscountAmt(Double.valueOf(0)); //优惠金额
|
|
|
- payOrder.setOilPirce(payOrderRequest.getReceivableAmt().toString()); //非油品价格
|
|
|
- payOrder.setOrderLiters("0");
|
|
|
- resultMap.put("discountAmt", "0"); //优惠价格
|
|
|
- resultMap.put("amt", payOrderRequest.getReceivableAmt()); //实收价格
|
|
|
- resultMap.put("receivableAmt", payOrderRequest.getReceivableAmt()); //应收价格
|
|
|
- resultMap.put("oilLiters", "0");
|
|
|
- resultMap.put("discountPrice", "0");
|
|
|
- resultMap.put("ordNo", ordNo);
|
|
|
- payOrderMapper.insertSelective(payOrder);
|
|
|
}
|
|
|
resultData = ResultData.success(resultMap);
|
|
|
}else {
|
|
@@ -179,10 +181,11 @@ public class PayOrderController {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
map.put("oilName", oilName);
|
|
|
map.put("stationId", stationId);
|
|
|
+ //获取油站油品价格 优惠方案 是否开启电子卡
|
|
|
Map<String, Object> result = stationService.selectStationOilPriceAndDiscountSetting(map);
|
|
|
- String oilPrice = result.get("oilPrice").toString();
|
|
|
- String discountSetting = result.get("discountSetting").toString();
|
|
|
- String cardEnabledFlag = result.get("cardEnabledFlag").toString();
|
|
|
+ String oilPrice = result.get("oilPrice").toString(); //油站油品价格
|
|
|
+ String discountSetting = result.get("discountSetting").toString(); //优惠方案
|
|
|
+ String cardEnabledFlag = result.get("cardEnabledFlag").toString(); //是否开启电子卡
|
|
|
|
|
|
Map<String ,Object> params = new HashMap<String, Object>();
|
|
|
params.put("stationId", stationId);
|
|
@@ -253,6 +256,7 @@ public class PayOrderController {
|
|
|
}
|
|
|
}
|
|
|
amt = receivableAmt.subtract(discountAmt); //应收金额
|
|
|
+ amt =amt.signum() == -1 ? new BigDecimal("0.01"): amt;
|
|
|
discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? discountPrice : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP); //优惠价格
|
|
|
payOrderResultInfo.setAmt(amt.toString());
|
|
|
payOrderResultInfo.setDiscountAmt(discountAmt.toString());
|
|
@@ -261,6 +265,7 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setReceivableAmt(receivableAmt.toString());
|
|
|
payOrderResultInfo.setOilPrice(oilPrice.toString());
|
|
|
payOrderResultInfo.setDzkAmt(amt.toString());
|
|
|
+ payOrderResultInfo.setCardEnabledFlag(params.get("cardEnabledFlag").toString());
|
|
|
logger.info("油站是否开启电子会员卡功能: " +params.get("cardEnabledFlag").toString());
|
|
|
if(params.get("cardEnabledFlag").toString().equals("1")){
|
|
|
CustomerCardSetting customerCardSetting = new CustomerCardSetting();
|
|
@@ -327,6 +332,7 @@ public class PayOrderController {
|
|
|
|
|
|
}
|
|
|
amt = receivableAmt.subtract(discountAmt); //应收金额
|
|
|
+ amt =amt.signum() == -1 ? new BigDecimal("0.01"): amt;
|
|
|
discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? discountPrice : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP); //优惠价格
|
|
|
payOrderResultInfo.setAmt(amt.toString());
|
|
|
payOrderResultInfo.setDiscountAmt(discountAmt.toString());
|
|
@@ -335,6 +341,7 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setReceivableAmt(receivableAmt.toString());
|
|
|
payOrderResultInfo.setOilPrice(oilPrice.toString());
|
|
|
payOrderResultInfo.setDzkAmt(amt.toString());
|
|
|
+ payOrderResultInfo.setCardEnabledFlag(params.get("cardEnabledFlag").toString());
|
|
|
logger.info("油站是否开启电子会员卡功能: " +params.get("cardEnabledFlag").toString());
|
|
|
if(params.get("cardEnabledFlag").toString().equals("1")){
|
|
|
CustomerCardSetting customerCardSetting = new CustomerCardSetting();
|
|
@@ -402,6 +409,7 @@ public class PayOrderController {
|
|
|
}
|
|
|
}
|
|
|
amt = receivableAmt.subtract(discountAmt); //应收金额
|
|
|
+ amt =amt.signum() == -1 ? new BigDecimal("0.01"): amt;
|
|
|
discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? discountPrice : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP); //优惠价格
|
|
|
payOrderResultInfo.setAmt(amt.toString());
|
|
|
payOrderResultInfo.setDiscountAmt(discountAmt.toString());
|
|
@@ -410,6 +418,7 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setReceivableAmt(receivableAmt.toString());
|
|
|
payOrderResultInfo.setOilPrice(oilPrice.toString());
|
|
|
payOrderResultInfo.setDzkAmt(amt.toString());
|
|
|
+ payOrderResultInfo.setCardEnabledFlag(params.get("cardEnabledFlag").toString());
|
|
|
logger.info("油站是否开启电子会员卡功能: " +params.get("cardEnabledFlag").toString());
|
|
|
if(params.get("cardEnabledFlag").toString().equals("1")){
|
|
|
CustomerCardSetting customerCardSetting = new CustomerCardSetting();
|
|
@@ -488,6 +497,7 @@ public class PayOrderController {
|
|
|
}
|
|
|
}
|
|
|
amt = receivableAmt.subtract(discountAmt); //应收金额
|
|
|
+ amt =amt.signum() == -1 ? new BigDecimal("0.01"): amt;
|
|
|
discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? discountPrice : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP); //优惠价格
|
|
|
payOrderResultInfo.setAmt(amt.toString());
|
|
|
payOrderResultInfo.setDiscountAmt(discountAmt.toString());
|
|
@@ -496,6 +506,7 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setReceivableAmt(receivableAmt.toString());
|
|
|
payOrderResultInfo.setOilPrice(oilPrice.toString());
|
|
|
payOrderResultInfo.setDzkAmt(amt.toString());
|
|
|
+ payOrderResultInfo.setCardEnabledFlag(params.get("cardEnabledFlag").toString());
|
|
|
logger.info("油站是否开启电子会员卡功能: " +params.get("cardEnabledFlag").toString());
|
|
|
if(params.get("cardEnabledFlag").toString().equals("1")){
|
|
|
CustomerCardSetting customerCardSetting = new CustomerCardSetting();
|
|
@@ -534,491 +545,6 @@ public class PayOrderController {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- /*
|
|
|
- * ===========================计算订单金额======================================
|
|
|
- * 第一次修订时间:2021年4月20日15:31:30
|
|
|
- * 修订标题:修订优惠计算
|
|
|
- * 修订内容 :
|
|
|
- * 修改为目前只有三种优惠:根据立减、满减、独立直降;
|
|
|
- * 注释:优惠为 1 是:表示不走满减、立减、独立直降优惠,只走等级直降的优惠;
|
|
|
- * 条件规则:
|
|
|
- * 一,优先满减(只有一档,不存在多档!)、立减(只有一档,不存在多档!)、独立直降(只有一档)
|
|
|
- * 二,若用户消费门槛 >= 优惠门槛,且启用优惠叠加时,则计算优惠规则和等级优惠规则;
|
|
|
- * 若用户消费门槛 >= 优惠门槛,且不启用优惠叠加时,则只计算优惠规则;
|
|
|
- * 若用户消费门槛 < 优惠门槛,且启用优惠叠加时,则只计算等级规则;
|
|
|
- * 若用户消费门槛 < 优惠门槛,且不启用优惠叠加时,则只计算等级规则;
|
|
|
- *
|
|
|
- * ===========================================================================
|
|
|
- */
|
|
|
- public Map<String ,Object> calculateAmtNew(PayOrderRequest payOrderRequest){
|
|
|
- Map<String ,Object> resultMap = new HashMap<>();
|
|
|
- if(payOrderRequest.getReceivableAmt() !=null){ //应收金额
|
|
|
- Double receivableAmt = payOrderRequest.getReceivableAmt(); //应收金额 用户输入的金额
|
|
|
- Integer stationId = payOrderRequest.getStationId(); //油站ID
|
|
|
-
|
|
|
- //String oilGun = payOrderRequest.getOilGun(); //油枪号
|
|
|
- String oilName = payOrderRequest.getOilName(); //油品名称
|
|
|
- String openId = payOrderRequest.getOpenId(); //用户的openId
|
|
|
- String mobilePhone = payOrderRequest.getCustomerPhone(); //客户手机号
|
|
|
- //获取油品价格
|
|
|
- StationOilPrice stationOilPrice = new StationOilPrice();
|
|
|
- stationOilPrice.setStationId(stationId);
|
|
|
- stationOilPrice.setOilName(oilName);
|
|
|
- StationOilPrice oilPriceInfo = stationService.getStationOilPrice(stationOilPrice);
|
|
|
- String oilPrice = oilPriceInfo.getOilPrice();
|
|
|
- //String stationNanme = oilPriceInfo.getStationNanme();
|
|
|
- BigDecimal oilLiters = new BigDecimal(0);
|
|
|
- BigDecimal discountAmt =new BigDecimal(0);
|
|
|
- BigDecimal discountPrice = null;
|
|
|
- BigDecimal amt = null;
|
|
|
-
|
|
|
- //resultMap.put("stationName", stationNanme);
|
|
|
- resultMap.put("oilPrice", oilPrice); //油品价格
|
|
|
- resultMap.put("receivableAmt", receivableAmt); //应收价格
|
|
|
- //该油站的优惠方式
|
|
|
- String stationDiscountWay = stationService.getStationDiscountWay(stationId.toString());
|
|
|
- Map<String ,Object> params = new HashMap<String, Object>();
|
|
|
- params.put("stationId", stationId);
|
|
|
- params.put("oilName", oilName);
|
|
|
- params.put("receivableAmt", receivableAmt);
|
|
|
- params.put("oilPrice", oilPrice);
|
|
|
- params.put("mobilePhone", mobilePhone);
|
|
|
- params.put("minaOpenid", openId);
|
|
|
- BigDecimal receivableAmt_b = new BigDecimal(receivableAmt); //传入的应收金额
|
|
|
- switch (stationDiscountWay){
|
|
|
- case "1": //1.等级直降
|
|
|
- //查询等级直降的优惠方式
|
|
|
- //查询客户等级信息
|
|
|
- List<Map<String, Object>> customerGradeInfo = customerGradeServices.getCustomerGradeInfo(params);
|
|
|
- if(customerGradeInfo != null && customerGradeInfo.size() >0){ //已存在客户等级信息
|
|
|
- //使用客户已存在的等级计算优惠
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
- if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
- }
|
|
|
- if(customerGradeInfo.get(0).containsKey("gasoilDiscountLitre")){ //表示可以查到客户在当前油站的等级信息,油站等级体系没有删除
|
|
|
- if(customerGradeInfo.get(0).get("gasoilDiscountLitre") !=null){
|
|
|
- discountAmt = oilLiters.multiply(new BigDecimal(customerGradeInfo.get(0).get("gasoilDiscountLitre").toString()));
|
|
|
- discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- }else {
|
|
|
- discountAmt =new BigDecimal("0.00");
|
|
|
- }
|
|
|
- }else {
|
|
|
- //如果存在客户等级,但油站修改等级体系,客户等级已超出等级体系时
|
|
|
- List<Map> cList = customerGradeServices.getCustomerGradeListOrderByDesc(params);
|
|
|
- if(cList !=null && cList.size() >0){
|
|
|
- CustomerManage customerManage = new CustomerManage();
|
|
|
- customerManage.setStationId(Integer.valueOf(params.get("stationId").toString())); //油站ID
|
|
|
- customerManage.setOilName(params.get("oilName").toString()); //油品名称
|
|
|
- customerManage.setPhoneNumber(params.get("mobilePhone").toString());
|
|
|
- customerManage.setMinaOpenid(params.get("minaOpenid").toString());
|
|
|
- CustomerManage existCustomer = customerManagerService.getCustomerManageInfo(customerManage); //已存在用户信息 existCustomer
|
|
|
- for(Map m : cList){
|
|
|
- if(Double.valueOf(existCustomer.getAmt().toString()) >= Double.valueOf(m.get("memberConditStart").toString())){
|
|
|
- discountAmt = oilLiters.multiply(new BigDecimal(cList.get(0).get("gasoilDiscountLitre").toString()));
|
|
|
- discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- amt = receivableAmt_b.subtract(discountAmt);
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- resultMap.put("discountAmt", discountAmt.doubleValue());
|
|
|
- resultMap.put("amt", amt.doubleValue());
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", discountPrice.doubleValue());
|
|
|
- }else {
|
|
|
- //不存在客户等级信息时,查询油站的客户等级直降优惠(查询结果根据会员成长值条件做升序查询)
|
|
|
- List<Map> customerGradeList = customerGradeServices.getCustomerGradeList(params);
|
|
|
- //如果存在
|
|
|
- if(customerGradeList !=null && customerGradeList.size() >0){
|
|
|
- //用户第一次购买 取等级最低初始会员的优惠条件计算
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
- if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
- }
|
|
|
-
|
|
|
- if(customerGradeList.get(0).get("gasoilDiscountLitre") !=null){
|
|
|
- discountAmt = oilLiters.multiply(new BigDecimal(customerGradeList.get(0).get("gasoilDiscountLitre").toString()));
|
|
|
- discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- }else {
|
|
|
- discountAmt =new BigDecimal("0.00");
|
|
|
- }
|
|
|
- amt = receivableAmt_b.subtract(discountAmt);
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- resultMap.put("discountAmt", discountAmt.doubleValue());
|
|
|
- resultMap.put("amt", amt.doubleValue());
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", discountPrice.doubleValue());
|
|
|
- }else {
|
|
|
- //不存在
|
|
|
- resultMap.put("discountAmt", 0);
|
|
|
- resultMap.put("amt", receivableAmt.doubleValue());
|
|
|
- oilLiters = new BigDecimal(receivableAmt).divide(new BigDecimal(oilPrice), 2, BigDecimal.ROUND_UP);
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", oilPrice);
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case "2": //2.满减
|
|
|
- params.put("discountPlanType", "1");
|
|
|
- //营销方案
|
|
|
- List<Map> customerMarkertPlanList_1 = customerGradeServices.getCustomerMarkertPlanList(params);
|
|
|
- //有优惠规则
|
|
|
- if(customerMarkertPlanList_1 !=null && customerMarkertPlanList_1.size() >0){
|
|
|
- //是否共享会员优惠叠加: 1 代表是; 2 代表否;
|
|
|
- String vipDiscountyPlus = customerMarkertPlanList_1.get(0).get("vipDiscountyPlus").toString();
|
|
|
- //如果当前应收金额大于条件金额
|
|
|
- BigDecimal discountAmt_b = new BigDecimal(customerMarkertPlanList_1.get(0).get("discountAmt").toString()); //条件金额
|
|
|
- if(receivableAmt_b.compareTo(discountAmt_b) ==1 || receivableAmt_b.compareTo(discountAmt_b) ==0){
|
|
|
- BigDecimal gasoilDiscountAmt_b = new BigDecimal(customerMarkertPlanList_1.get(0).get("gasoilDiscountAmt").toString()); //每满多少优惠多少的金额
|
|
|
- discountAmt = receivableAmt_b.divide(discountAmt_b, 2, BigDecimal.ROUND_HALF_UP).multiply(gasoilDiscountAmt_b); //优惠金额
|
|
|
- discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- amt = receivableAmt_b.subtract(discountAmt); //实收金额
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
- if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
- }
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- switch (vipDiscountyPlus){
|
|
|
- case "1":
|
|
|
- Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
|
|
|
- discountAmt = discountAmt.add(new BigDecimal(map.get("discountAmt").toString()));
|
|
|
- amt = receivableAmt_b.subtract(discountAmt);
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- resultMap.put("discountAmt", discountAmt.doubleValue());
|
|
|
- resultMap.put("amt", amt.doubleValue());
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", discountPrice.doubleValue());
|
|
|
- break;
|
|
|
- case "2":
|
|
|
- resultMap.put("discountAmt", discountAmt.doubleValue());
|
|
|
- resultMap.put("amt", amt.doubleValue());
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", discountPrice.doubleValue());
|
|
|
- break;
|
|
|
- }
|
|
|
- }else{
|
|
|
- switch (vipDiscountyPlus){
|
|
|
- case "1":
|
|
|
- Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
|
|
|
- discountAmt = discountAmt.add(new BigDecimal(map.get("discountAmt").toString()));
|
|
|
- oilLiters = new BigDecimal(map.get("oilLiters").toString());
|
|
|
- amt = receivableAmt_b.subtract(discountAmt);
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- resultMap.put("discountAmt", discountAmt.doubleValue());
|
|
|
- resultMap.put("amt", amt.doubleValue());
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", discountPrice.doubleValue());
|
|
|
- break;
|
|
|
- case "2":
|
|
|
- resultMap.put("discountAmt", 0);
|
|
|
- resultMap.put("amt", receivableAmt.doubleValue());
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
- if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
- }
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", oilPrice);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }else {
|
|
|
- //用户没有设置优惠规则时
|
|
|
- Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
|
|
|
- resultMap.put("discountAmt", map.get("discountAmt").toString());
|
|
|
- resultMap.put("amt", map.get("amt").toString());
|
|
|
- resultMap.put("oilLiters", map.get("oilLiters").toString());
|
|
|
- resultMap.put("discountPrice", map.get("discountPrice").toString());
|
|
|
- }
|
|
|
- break;
|
|
|
- case "3": //3.立减
|
|
|
- params.put("discountPlanType", "2");
|
|
|
- //营销方案
|
|
|
- List<Map> customerMarkertPlanList_2 = customerGradeServices.getCustomerMarkertPlanList(params);
|
|
|
- if(customerMarkertPlanList_2 !=null && customerMarkertPlanList_2.size() >0){
|
|
|
- //是否共享会员优惠叠加: 1 代表是; 2 代表否;
|
|
|
- String vipDiscountyPlus = customerMarkertPlanList_2.get(0).get("vipDiscountyPlus").toString();
|
|
|
- //如果当前应收金额大于条件金额
|
|
|
- BigDecimal discountAmt_b = new BigDecimal(customerMarkertPlanList_2.get(0).get("discountAmt").toString()); //条件金额
|
|
|
- if(receivableAmt_b.compareTo(discountAmt_b) ==1 || receivableAmt_b.compareTo(discountAmt_b) ==0){
|
|
|
- BigDecimal gasoilDiscountAmt_b = new BigDecimal(customerMarkertPlanList_2.get(0).get("gasoilDiscountAmt").toString()); //满多少优惠多少的金额
|
|
|
- discountAmt = gasoilDiscountAmt_b; //优惠金额
|
|
|
- amt = receivableAmt_b.subtract(gasoilDiscountAmt_b); //实收金额
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
- if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
- }
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_UP);
|
|
|
- switch (vipDiscountyPlus){
|
|
|
- case "1":
|
|
|
- Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
|
|
|
- discountAmt = discountAmt.add(new BigDecimal(map.get("discountAmt").toString()));
|
|
|
- amt = receivableAmt_b.subtract(discountAmt);
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- //discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_UP);
|
|
|
- resultMap.put("discountAmt", discountAmt.doubleValue());
|
|
|
- resultMap.put("amt", amt.doubleValue());
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", discountPrice.doubleValue());
|
|
|
- break;
|
|
|
- case "2":
|
|
|
- resultMap.put("discountAmt", discountAmt.doubleValue());
|
|
|
- resultMap.put("amt", amt.doubleValue());
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", discountPrice.doubleValue());
|
|
|
- break;
|
|
|
- }
|
|
|
- }else {
|
|
|
- //不满足优惠条件
|
|
|
- switch (vipDiscountyPlus) {
|
|
|
- case "1":
|
|
|
- Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
|
|
|
- discountAmt = discountAmt.add(new BigDecimal(map.get("discountAmt").toString()));
|
|
|
- oilLiters = new BigDecimal(map.get("oilLiters").toString());
|
|
|
- amt = receivableAmt_b.subtract(discountAmt);
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- //discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_UP);
|
|
|
- resultMap.put("discountAmt", discountAmt.doubleValue());
|
|
|
- resultMap.put("amt", amt.doubleValue());
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", discountPrice.doubleValue());
|
|
|
- break;
|
|
|
- case "2":
|
|
|
- resultMap.put("discountAmt", 0);
|
|
|
- resultMap.put("amt", receivableAmt.doubleValue());
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
- if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
- }
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", oilPrice);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }else {
|
|
|
- //用户没有设置优惠规则时
|
|
|
- Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
|
|
|
- resultMap.put("discountAmt", map.get("discountAmt").toString());
|
|
|
- resultMap.put("amt", map.get("amt").toString());
|
|
|
- resultMap.put("oilLiters", map.get("oilLiters").toString());
|
|
|
- resultMap.put("discountPrice", map.get("discountPrice").toString());
|
|
|
- }
|
|
|
- break;
|
|
|
- case "4": //4.独立直降
|
|
|
- params.put("discountPlanType", "3");
|
|
|
- //营销方案
|
|
|
- List<Map> customerMarkertPlanList_3 = customerGradeServices.getCustomerMarkertPlanList(params);
|
|
|
- if(customerMarkertPlanList_3 !=null && customerMarkertPlanList_3.size() >0){
|
|
|
- //是否共享会员优惠叠加: 1 代表是; 2 代表否;
|
|
|
- String vipDiscountyPlus_4 = customerMarkertPlanList_3.get(0).get("vipDiscountyPlus").toString();
|
|
|
- BigDecimal discountAmt_b = new BigDecimal(customerMarkertPlanList_3.get(0).get("discountAmt").toString()); //条件金额
|
|
|
- BigDecimal gasoilDiscountAmt_b = new BigDecimal(customerMarkertPlanList_3.get(0).get("gasoilDiscountAmt").toString());
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
- if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
- }
|
|
|
- if(customerMarkertPlanList_3.get(0).get("discountTerm").toString().equals("1")){ //按升数优惠
|
|
|
- if(oilLiters.compareTo(discountAmt_b) ==1 || oilLiters.compareTo(discountAmt_b) ==0){
|
|
|
- //计算
|
|
|
- discountAmt = oilLiters.multiply(gasoilDiscountAmt_b);
|
|
|
- discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- amt = receivableAmt_b.subtract(discountAmt);
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- //discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_UP); //优惠价格
|
|
|
-
|
|
|
- if(vipDiscountyPlus_4.equals("1")){
|
|
|
- Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
|
|
|
- discountAmt = discountAmt.add(new BigDecimal(map.get("discountAmt").toString()));
|
|
|
- amt = receivableAmt_b.subtract(discountAmt);
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- //discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_UP);
|
|
|
- }
|
|
|
- resultMap.put("discountAmt", discountAmt.doubleValue());
|
|
|
- resultMap.put("amt", amt.doubleValue());
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", discountPrice.doubleValue());
|
|
|
- break;
|
|
|
- }else {
|
|
|
- //不满足优惠条件
|
|
|
- switch (vipDiscountyPlus_4) {
|
|
|
- case "1":
|
|
|
- Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
|
|
|
- discountAmt = discountAmt.add(new BigDecimal(map.get("discountAmt").toString()));
|
|
|
- oilLiters = new BigDecimal(map.get("oilLiters").toString());
|
|
|
- amt = receivableAmt_b.subtract(discountAmt);
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- resultMap.put("discountAmt", discountAmt.doubleValue());
|
|
|
- resultMap.put("amt", amt.doubleValue());
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", discountPrice.doubleValue());
|
|
|
- break;
|
|
|
- case "2":
|
|
|
- resultMap.put("discountAmt", 0);
|
|
|
- resultMap.put("amt", receivableAmt.doubleValue());
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
- if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
- }
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", oilPrice);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }else if(customerMarkertPlanList_3.get(0).get("discountTerm").toString().equals("2")){ //按金额优惠
|
|
|
- if(receivableAmt_b.compareTo(discountAmt_b) ==1 || receivableAmt_b.compareTo(discountAmt_b) ==0){
|
|
|
- discountAmt = oilLiters.multiply(gasoilDiscountAmt_b);
|
|
|
- discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- amt = receivableAmt_b.subtract(discountAmt);
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- //是否共享会员优惠叠加
|
|
|
- if(vipDiscountyPlus_4.equals("1")){
|
|
|
- Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
|
|
|
- discountAmt = discountAmt.add(new BigDecimal(map.get("discountAmt").toString()));
|
|
|
- amt = receivableAmt_b.subtract(discountAmt);
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- //discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_UP);
|
|
|
- }
|
|
|
- resultMap.put("discountAmt", discountAmt.doubleValue());
|
|
|
- resultMap.put("amt", amt.doubleValue());
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", discountPrice.doubleValue());
|
|
|
- break;
|
|
|
- }else {
|
|
|
- //不满足优惠条件
|
|
|
- switch (vipDiscountyPlus_4) {
|
|
|
- case "1":
|
|
|
- Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
|
|
|
- discountAmt = discountAmt.add(new BigDecimal(map.get("discountAmt").toString()));
|
|
|
- oilLiters = new BigDecimal(map.get("oilLiters").toString());
|
|
|
- amt = receivableAmt_b.subtract(discountAmt);
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- resultMap.put("discountAmt", discountAmt.doubleValue());
|
|
|
- resultMap.put("amt", amt.doubleValue());
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", discountPrice.doubleValue());
|
|
|
- break;
|
|
|
- case "2":
|
|
|
- resultMap.put("discountAmt", 0);
|
|
|
- resultMap.put("amt", receivableAmt.doubleValue());
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
- if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
- }
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", oilPrice);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }else {
|
|
|
- //没有设置优惠条件时
|
|
|
- Map<String, Object> map = this.calcuteDengJiZhiJiang(params);
|
|
|
- resultMap.put("discountAmt", map.get("discountAmt").toString());
|
|
|
- resultMap.put("amt", map.get("amt").toString());
|
|
|
- resultMap.put("oilLiters", map.get("oilLiters").toString());
|
|
|
- resultMap.put("discountPrice", map.get("discountPrice").toString());
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- return resultMap;
|
|
|
- }
|
|
|
-
|
|
|
- //计算
|
|
|
-
|
|
|
-
|
|
|
- //计算等级直降
|
|
|
- public Map<String, Object> calcuteDengJiZhiJiang(Map params){
|
|
|
- Double receivableAmt = Double.valueOf(params.get("receivableAmt").toString());
|
|
|
- Map<String, Object> resultMap = new HashMap();
|
|
|
- BigDecimal oilLiters = null;
|
|
|
- BigDecimal discountAmt =new BigDecimal(0);
|
|
|
- BigDecimal discountPrice = null;
|
|
|
- BigDecimal amt = null;
|
|
|
- BigDecimal receivableAmt_b = new BigDecimal(receivableAmt); //传入的应收金额
|
|
|
- String oilPrice = params.get("oilPrice").toString();
|
|
|
- List<Map<String, Object>> customerGradeInfo = customerGradeServices.getCustomerGradeInfo(params);
|
|
|
- if(customerGradeInfo != null && customerGradeInfo.size() >0){ //已存在客户等级信息
|
|
|
- //使用客户已存在的等级计算优惠
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
- if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
- }
|
|
|
-
|
|
|
- if(customerGradeInfo.get(0).containsKey("gasoilDiscountLitre")){
|
|
|
- if(customerGradeInfo.get(0).get("gasoilDiscountLitre") !=null){
|
|
|
- discountAmt = oilLiters.multiply(new BigDecimal(customerGradeInfo.get(0).get("gasoilDiscountLitre").toString()));
|
|
|
- discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- }else {
|
|
|
- discountAmt =new BigDecimal("0.00");
|
|
|
- }
|
|
|
- }else {
|
|
|
- //如果存在客户等级,但油站修改等级体系,客户等级已超出等级体系时
|
|
|
- List<Map> cList = customerGradeServices.getCustomerGradeListOrderByDesc(params);
|
|
|
- if(cList !=null && cList.size() >0){
|
|
|
- CustomerManage customerManage = new CustomerManage();
|
|
|
- customerManage.setStationId(Integer.valueOf(params.get("stationId").toString())); //油站ID
|
|
|
- customerManage.setOilName(params.get("oilName").toString()); //油品名称
|
|
|
- customerManage.setPhoneNumber(params.get("mobilePhone").toString());
|
|
|
- customerManage.setMinaOpenid(params.get("minaOpenid").toString());
|
|
|
- CustomerManage existCustomer = customerManagerService.getCustomerManageInfo(customerManage); //已存在用户信息 existCustomer
|
|
|
- for(Map m : cList){
|
|
|
- if(Double.valueOf(existCustomer.getAmt().toString()) >= Double.valueOf(m.get("memberConditStart").toString())){
|
|
|
- discountAmt = oilLiters.multiply(new BigDecimal(cList.get(0).get("gasoilDiscountLitre").toString()));
|
|
|
- discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- amt = receivableAmt_b.subtract(discountAmt);
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- //discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_UP);
|
|
|
- resultMap.put("discountAmt", discountAmt.doubleValue());
|
|
|
- resultMap.put("amt", amt.doubleValue());
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", discountPrice.doubleValue());
|
|
|
- }else {
|
|
|
- //不存在客户等级信息时,查询油站的客户等级直降优惠(查询结果根据会员成长值条件做升序查询)
|
|
|
- List<Map> customerGradeList = customerGradeServices.getCustomerGradeList(params);
|
|
|
- //如果存在
|
|
|
- if(customerGradeList !=null && customerGradeList.size() >0){
|
|
|
- //用户第一次购买 取等级最低初始会员的优惠条件计算
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
- if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
- }
|
|
|
- if(customerGradeList.get(0).get("gasoilDiscountLitre") !=null){
|
|
|
- discountAmt = oilLiters.multiply(new BigDecimal(customerGradeList.get(0).get("gasoilDiscountLitre").toString()));
|
|
|
- discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- }else {
|
|
|
- discountAmt =new BigDecimal("0.00");
|
|
|
- }
|
|
|
- amt = receivableAmt_b.subtract(discountAmt);
|
|
|
- discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? new BigDecimal(oilPrice) : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- //discountPrice = amt.divide(oilLiters, 2, BigDecimal.ROUND_UP);
|
|
|
- resultMap.put("discountAmt", discountAmt.doubleValue());
|
|
|
- resultMap.put("amt", amt.doubleValue());
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", discountPrice.doubleValue());
|
|
|
- }else {
|
|
|
- //不存在
|
|
|
- resultMap.put("discountAmt", 0);
|
|
|
- resultMap.put("amt", receivableAmt.doubleValue());
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_HALF_UP); //加油升数
|
|
|
- if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
|
|
|
- oilLiters = receivableAmt_b.divide(new BigDecimal(oilPrice),2, BigDecimal.ROUND_UP);
|
|
|
- }
|
|
|
- resultMap.put("oilLiters", oilLiters.doubleValue());
|
|
|
- resultMap.put("discountPrice", oilPrice);
|
|
|
- }
|
|
|
- }
|
|
|
- return resultMap;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 根据订单号获取订单信息
|
|
|
* produces="application/json;charset=UTF-8",consumes = "application/json",
|
|
@@ -1026,24 +552,16 @@ public class PayOrderController {
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
- @RequestMapping(value = "/getPayOrderList", method = RequestMethod.GET)
|
|
|
+ @RequestMapping(value = "/selectOrderInfoByOrdNo", method = RequestMethod.GET)
|
|
|
@ResponseBody
|
|
|
- public String getPayOrderList(@RequestParam String orderNo,String openId,String userType){
|
|
|
+ public String getPayOrderList(@RequestParam String orderNo){
|
|
|
Gson gson =new Gson();
|
|
|
ResultData resultData =null;
|
|
|
- //根据token 和 usertype来判断用户是否存在
|
|
|
- boolean flag = appUserInfoService.selectAppUserInfo(openId,userType);
|
|
|
- if(flag){
|
|
|
- if(StringUtils.isNotBlank(orderNo)){
|
|
|
- PayOrderRequest payOrderRequest =new PayOrderRequest();
|
|
|
- payOrderRequest.setOrderNo(orderNo);
|
|
|
- List<PayOrder> payOrderList = payOrderService.getPayOrderList(payOrderRequest.getOrderNo());
|
|
|
- resultData=ResultData.success(payOrderList);
|
|
|
- }else {
|
|
|
- resultData=ResultData.error(CodeMsg.SEARCH_FAIL);
|
|
|
- }
|
|
|
- }else{
|
|
|
- resultData=ResultData.error(CodeMsg.USER_NOT_EXSIST);
|
|
|
+ if(StringUtils.isNotBlank(orderNo)){
|
|
|
+ PayOrder payOrder = payOrderService.selectOrderInfoByOrdNo(orderNo);
|
|
|
+ resultData = ResultData.success(payOrder);
|
|
|
+ }else {
|
|
|
+ resultData=ResultData.error(CodeMsg.SEARCH_FAIL);
|
|
|
}
|
|
|
return gson.toJson(resultData);
|
|
|
}
|
|
@@ -1066,7 +584,7 @@ public class PayOrderController {
|
|
|
appUserInfo.setBlogOpenid(openId);
|
|
|
break;
|
|
|
case "2":
|
|
|
- appUserInfo.setMinaOpenid(openId);
|
|
|
+ appUserInfo.setALiId(openId);
|
|
|
break;
|
|
|
}
|
|
|
List<PayOrder> payOrderList = payOrderService.getOrderListByOpenIdAndUserType(appUserInfo);
|