|
@@ -131,34 +131,7 @@ public class PayOrderController {
|
|
|
payOrderRequest.setCardOilsType(oilInfo.getOilsType()); //电子卡类型;注:用于获取客户电子卡参数查询
|
|
|
payOrder.setOilName(oilName); //油品名称
|
|
|
|
|
|
- //该油站是否开启优惠券功能
|
|
|
- if(stationInfos.getCouponEnabledFlag() == null){
|
|
|
- resultMap.put("couponEnabledFlag", "0");
|
|
|
- }else {
|
|
|
- resultMap.put("couponEnabledFlag", stationInfos.getCouponEnabledFlag());
|
|
|
- }
|
|
|
- //获取用户的优惠券
|
|
|
- if(stationInfos.getCouponEnabledFlag() !=null && stationInfos.getCouponEnabledFlag().equals("1")){
|
|
|
-
|
|
|
- Integer stationId = payOrderRequest.getStationId();
|
|
|
- //集团下
|
|
|
- if(stationInfos.getCouponFlag() !=null && stationInfos.getCouponFlag().equals("1")){
|
|
|
- stationId=stationInfos.getGroupId();
|
|
|
- }
|
|
|
- //设置了扫码后支付成功后的领取
|
|
|
- String couponIssueId = ""; //领取方式ID
|
|
|
- resultMap.put("couponIssueId", couponIssueId);
|
|
|
- couponIssueId = this.getCouponIssue(stationId).get(0).getCouponIssueId();
|
|
|
- if(StringUtils.isNotBlank(couponIssueId)){
|
|
|
- resultMap.put("couponIssueId", couponIssueId);
|
|
|
- }
|
|
|
- List<UserCoupon> userCouponsList = new ArrayList<>(); //用户的优惠券
|
|
|
- resultMap.put("userCouponsList", userCouponsList);
|
|
|
- userCouponsList = this.getUserCoupon(appUserInfos.getUnionId(), stationId);
|
|
|
- if(userCouponsList !=null && userCouponsList.size()>0){
|
|
|
- resultMap.put("userCouponsList", userCouponsList);
|
|
|
- }
|
|
|
- }
|
|
|
+ PayOrderResultInfo payOrderResultInfo = this.calculateAmt(payOrderRequest); //计算订单金额 价格 加油升数 等等
|
|
|
if(oilsType.equals("3")){ //订单类型是油品时计算
|
|
|
payOrder.setOrderType("2");
|
|
|
payOrder.setAmt(Double.valueOf(payOrderRequest.getReceivableAmt())); //非油品金额
|
|
@@ -175,7 +148,7 @@ public class PayOrderController {
|
|
|
logger.info("返回前端的结果:" +resultMap.toString());
|
|
|
//payOrderMapper.insertSelective(payOrder);
|
|
|
}else {
|
|
|
- PayOrderResultInfo payOrderResultInfo = this.calculateAmt(payOrderRequest); //计算订单金额 价格 加油升数 等等
|
|
|
+ //PayOrderResultInfo payOrderResultInfo = this.calculateAmt(payOrderRequest); //计算订单金额 价格 加油升数 等等
|
|
|
payOrder.setOilPirce(payOrderResultInfo.getOilPrice());
|
|
|
payOrder.setOrderLiters(payOrderResultInfo.getOilLiters());
|
|
|
payOrder.setDiscountAmt(Double.valueOf(payOrderResultInfo.getDiscountAmt()));
|
|
@@ -214,6 +187,37 @@ public class PayOrderController {
|
|
|
//payOrderMapper.insertSelective(payOrder);
|
|
|
}
|
|
|
|
|
|
+ //该油站是否开启优惠券功能
|
|
|
+ if(stationInfos.getCouponEnabledFlag() == null){
|
|
|
+ resultMap.put("couponEnabledFlag", "0");
|
|
|
+ }else {
|
|
|
+ resultMap.put("couponEnabledFlag", stationInfos.getCouponEnabledFlag());
|
|
|
+ }
|
|
|
+ //获取用户的优惠券
|
|
|
+ if(stationInfos.getCouponEnabledFlag() !=null && stationInfos.getCouponEnabledFlag().equals("1")){
|
|
|
+
|
|
|
+ Integer stationId = payOrderRequest.getStationId();
|
|
|
+ //集团下
|
|
|
+ if(stationInfos.getCouponFlag() !=null && stationInfos.getCouponFlag().equals("1")){
|
|
|
+ stationId=stationInfos.getGroupId();
|
|
|
+ }
|
|
|
+ //设置了扫码后支付成功后的领取
|
|
|
+ String couponIssueId = ""; //领取方式ID
|
|
|
+ resultMap.put("couponIssueId", couponIssueId);
|
|
|
+ couponIssueId = this.getCouponIssue(stationId).get(0).getCouponIssueId();
|
|
|
+ if(StringUtils.isNotBlank(couponIssueId)){
|
|
|
+ resultMap.put("couponIssueId", couponIssueId);
|
|
|
+ }
|
|
|
+ List<UserCoupon> userCouponsList = new ArrayList<>(); //用户的优惠券
|
|
|
+ resultMap.put("userCouponsList", userCouponsList);
|
|
|
+ //userCouponsList = this.getUserCoupon(appUserInfos.getUnionId(), stationId);
|
|
|
+ userCouponsList = payOrderResultInfo.getUserCouponsList();
|
|
|
+ if(userCouponsList !=null && userCouponsList.size()>0){
|
|
|
+ resultMap.put("userCouponsList", userCouponsList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
//根据油站和油枪获取加油员
|
|
|
if (payOrderRequest.getPersonnelId() != null && payOrderRequest.getPersonnelId() != "" && !payOrderRequest.getPersonnelId().equals("undefined")) {
|
|
|
//表示为一人一码:一个加油员一个码
|
|
@@ -373,18 +377,47 @@ public class PayOrderController {
|
|
|
switch (discountSetting){
|
|
|
case "0": //不执营销方案时 计算等级优惠
|
|
|
payOrderResultInfo = this.calculateGradeDiscount(params);
|
|
|
+ payOrderResultInfo.setOilName(params.get("oilName").toString());
|
|
|
+ payOrderResultInfo.setUnionId(params.get("unionId").toString());
|
|
|
+ payOrderResultInfo.setAllDiscountType("1");
|
|
|
+ payOrderResultInfo.setStationId(Integer.valueOf(params.get("stationId").toString()));
|
|
|
+ payOrderResultInfo.setUserCouponsList(this.getUserCouponAscList(payOrderResultInfo));
|
|
|
break;
|
|
|
case "1": //满减方案
|
|
|
payOrderResultInfo = this.calculateManJianDiscount(params);
|
|
|
+
|
|
|
+ payOrderResultInfo.setOilName(params.get("oilName").toString());
|
|
|
+ payOrderResultInfo.setUnionId(params.get("unionId").toString());
|
|
|
+ payOrderResultInfo.setAllDiscountType("2");
|
|
|
+ payOrderResultInfo.setStationId(Integer.valueOf(params.get("stationId").toString()));
|
|
|
+ payOrderResultInfo.setUserCouponsList(this.getUserCouponAscList(payOrderResultInfo));
|
|
|
break;
|
|
|
case "2": //立减方案
|
|
|
payOrderResultInfo = this.calculateLiJianDiscount(params);
|
|
|
+
|
|
|
+ payOrderResultInfo.setOilName(params.get("oilName").toString());
|
|
|
+ payOrderResultInfo.setUnionId(params.get("unionId").toString());
|
|
|
+ payOrderResultInfo.setAllDiscountType("2");
|
|
|
+ payOrderResultInfo.setStationId(Integer.valueOf(params.get("stationId").toString()));
|
|
|
+ payOrderResultInfo.setUserCouponsList(this.getUserCouponAscList(payOrderResultInfo));
|
|
|
break;
|
|
|
case "3": //独立直降
|
|
|
payOrderResultInfo = this.calculateZhiJiangDiscount(params);
|
|
|
+
|
|
|
+ payOrderResultInfo.setOilName(params.get("oilName").toString());
|
|
|
+ payOrderResultInfo.setUnionId(params.get("unionId").toString());
|
|
|
+ payOrderResultInfo.setAllDiscountType("2");
|
|
|
+ payOrderResultInfo.setStationId(Integer.valueOf(params.get("stationId").toString()));
|
|
|
+ payOrderResultInfo.setUserCouponsList(this.getUserCouponAscList(payOrderResultInfo));
|
|
|
break;
|
|
|
case "4": //计算阶梯直降
|
|
|
payOrderResultInfo = this.calculateJieTiZhiJiangDiscount(params);
|
|
|
+
|
|
|
+ payOrderResultInfo.setOilName(params.get("oilName").toString());
|
|
|
+ payOrderResultInfo.setUnionId(params.get("unionId").toString());
|
|
|
+ payOrderResultInfo.setAllDiscountType("2");
|
|
|
+ payOrderResultInfo.setStationId(Integer.valueOf(params.get("stationId").toString()));
|
|
|
+ payOrderResultInfo.setUserCouponsList(this.getUserCouponAscList(payOrderResultInfo));
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -792,6 +825,11 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setBalance(map.get("balance"));
|
|
|
payOrderResultInfo.setOilsCardFlag(map.get("oilsCardFlag"));
|
|
|
payOrderResultInfo.setCardOilsType(map.get("cardOilsType"));
|
|
|
+// payOrderResultInfo.setStationId(Integer.valueOf(params.get("stationId").toString()));
|
|
|
+// payOrderResultInfo.setOilName(params.get("oilName").toString());
|
|
|
+// payOrderResultInfo.setUnionId(params.get("unionId").toString());
|
|
|
+// payOrderResultInfo.setAllDiscountType("2");
|
|
|
+// payOrderResultInfo.setUserCouponsList(this.getUserCouponAscList(payOrderResultInfo));
|
|
|
}
|
|
|
return payOrderResultInfo;
|
|
|
}
|
|
@@ -981,6 +1019,11 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setBalance(map.get("balance"));
|
|
|
payOrderResultInfo.setOilsCardFlag(map.get("oilsCardFlag"));
|
|
|
payOrderResultInfo.setCardOilsType(map.get("cardOilsType"));
|
|
|
+// payOrderResultInfo.setStationId(Integer.valueOf(params.get("stationId").toString()));
|
|
|
+// payOrderResultInfo.setOilName(params.get("oilName").toString());
|
|
|
+// payOrderResultInfo.setUnionId(params.get("unionId").toString());
|
|
|
+// payOrderResultInfo.setAllDiscountType("2");
|
|
|
+// payOrderResultInfo.setUserCouponsList(this.getUserCouponAscList(payOrderResultInfo));
|
|
|
}
|
|
|
return payOrderResultInfo;
|
|
|
}
|
|
@@ -1115,6 +1158,11 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setBalance(map.get("balance"));
|
|
|
payOrderResultInfo.setOilsCardFlag(map.get("oilsCardFlag"));
|
|
|
payOrderResultInfo.setCardOilsType(map.get("cardOilsType"));
|
|
|
+// payOrderResultInfo.setStationId(Integer.valueOf(params.get("stationId").toString()));
|
|
|
+// payOrderResultInfo.setOilName(params.get("oilName").toString());
|
|
|
+// payOrderResultInfo.setUnionId(params.get("unionId").toString());
|
|
|
+// payOrderResultInfo.setAllDiscountType("2");
|
|
|
+// payOrderResultInfo.setUserCouponsList(this.getUserCouponAscList(payOrderResultInfo));
|
|
|
}
|
|
|
return payOrderResultInfo;
|
|
|
}
|
|
@@ -1253,6 +1301,11 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setBalance(map.get("balance"));
|
|
|
payOrderResultInfo.setOilsCardFlag(map.get("oilsCardFlag"));
|
|
|
payOrderResultInfo.setCardOilsType(map.get("cardOilsType"));
|
|
|
+// payOrderResultInfo.setOilName(params.get("oilName").toString());
|
|
|
+// payOrderResultInfo.setUnionId(params.get("unionId").toString());
|
|
|
+// payOrderResultInfo.setAllDiscountType("2");
|
|
|
+// payOrderResultInfo.setStationId(Integer.valueOf(params.get("stationId").toString()));
|
|
|
+// payOrderResultInfo.setUserCouponsList(this.getUserCouponAscList(payOrderResultInfo));
|
|
|
}
|
|
|
return payOrderResultInfo;
|
|
|
}
|
|
@@ -1366,6 +1419,11 @@ public class PayOrderController {
|
|
|
payOrderResultInfo.setBalance(map.get("balance"));
|
|
|
payOrderResultInfo.setOilsCardFlag(map.get("oilsCardFlag"));
|
|
|
payOrderResultInfo.setCardOilsType(map.get("cardOilsType"));
|
|
|
+// payOrderResultInfo.setOilName(params.get("oilName").toString());
|
|
|
+// payOrderResultInfo.setUnionId(params.get("unionId").toString());
|
|
|
+// payOrderResultInfo.setAllDiscountType("1");
|
|
|
+// payOrderResultInfo.setStationId(Integer.valueOf(params.get("stationId").toString()));
|
|
|
+// payOrderResultInfo.setUserCouponsList(this.getUserCouponAscList(payOrderResultInfo));
|
|
|
}
|
|
|
return payOrderResultInfo;
|
|
|
}
|
|
@@ -1374,7 +1432,7 @@ public class PayOrderController {
|
|
|
public List<UserCoupon> getUserCouponAscList(PayOrderResultInfo p){
|
|
|
Integer stationId = p.getStationId();
|
|
|
String unionId = p.getUnionId();
|
|
|
- List<UserCoupon> userCouponsCalAndAscList = new ArrayList<>();
|
|
|
+ List<UserCoupon> userCouponsList = new ArrayList<>();
|
|
|
StationInfo stationInfo = new StationInfo();
|
|
|
stationInfo.setStationId(stationId);
|
|
|
StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
|
|
@@ -1389,12 +1447,10 @@ public class PayOrderController {
|
|
|
userCoupon.setExpireFlag("0"); // SQL 条件判断 过期标志: 1 代表使用的优惠券已过期查询参数; 0 代表未过期有效的优惠券
|
|
|
userCoupon.setNoVerificationVerFlag("0"); //SQL 条件判断 查询没有异业券的参数标识: 0代表只有加油券 1代表只有异业券
|
|
|
userCoupon.setCurrentTime(new Date());
|
|
|
- List<UserCoupon> userCouponsList = couponService.selectUserCoupons(userCoupon);
|
|
|
+ userCouponsList = couponService.selectUserCoupons(userCoupon);
|
|
|
//循环计算优惠券金额 并排序
|
|
|
if(userCouponsList !=null && userCouponsList.size()>0){
|
|
|
for (UserCoupon uc: userCouponsList){
|
|
|
- //
|
|
|
- uc.getCouponThresholdAmt();
|
|
|
String status = uc.getStatus();
|
|
|
if(status !=null && status.equals("1")){
|
|
|
//返回前端使用优惠券后的计算金额计算后
|
|
@@ -1416,37 +1472,49 @@ public class PayOrderController {
|
|
|
couponReckonAmt.setOilLiters(oilLiters);
|
|
|
//优惠券时间类型
|
|
|
String availableControl = uc.getAvailableControl();
|
|
|
- switch (availableControl){
|
|
|
- case "0":
|
|
|
- couponReckonAmt = this.calCouponDiscount(couponReckonAmt, uc, p);
|
|
|
- break;
|
|
|
- case "1":
|
|
|
- boolean activityDay_1 = this.isActivityDay("1", uc.getCycleDays());
|
|
|
- if(activityDay_1)
|
|
|
- //指定每周几
|
|
|
- couponReckonAmt = this.calCouponDiscount(couponReckonAmt, uc, p);
|
|
|
- break;
|
|
|
- case "2":
|
|
|
- boolean activityDay_2 = this.isActivityDay("2", uc.getCycleDays());
|
|
|
- if(activityDay_2)
|
|
|
- //指定每月的几号
|
|
|
- couponReckonAmt = this.calCouponDiscount(couponReckonAmt, uc, p);
|
|
|
- break;
|
|
|
- case "3":
|
|
|
- boolean activityDay_3 = this.isActivityDay("3", uc.getAppointedDays());
|
|
|
- if (activityDay_3)
|
|
|
- //指定日
|
|
|
- couponReckonAmt = this.calCouponDiscount(couponReckonAmt, uc, p);
|
|
|
- break;
|
|
|
+ BigDecimal couponThresholdAmt = uc.getCouponThresholdAmt();
|
|
|
+ String oilName = p.getOilName();
|
|
|
+ String oilNames = uc.getOilName();
|
|
|
+ //判断该油品是否能用该张张优惠券
|
|
|
+ boolean contains = oilNames.contains(oilName);
|
|
|
+ if(contains){
|
|
|
+ BigDecimal receivableAmt = new BigDecimal(p.getReceivableAmt());
|
|
|
+ //应收金额大于优惠券门槛金额
|
|
|
+ if(!(receivableAmt.compareTo(couponThresholdAmt) == -1)){
|
|
|
+ switch (availableControl){
|
|
|
+ case "0":
|
|
|
+ couponReckonAmt = this.calCouponDiscount(couponReckonAmt, uc, p);
|
|
|
+ break;
|
|
|
+ case "1":
|
|
|
+ boolean activityDay_1 = this.isActivityDay("1", uc.getCycleDays());
|
|
|
+ if(activityDay_1)
|
|
|
+ //指定每周几
|
|
|
+ couponReckonAmt = this.calCouponDiscount(couponReckonAmt, uc, p);
|
|
|
+ break;
|
|
|
+ case "2":
|
|
|
+ boolean activityDay_2 = this.isActivityDay("2", uc.getCycleDays());
|
|
|
+ if(activityDay_2)
|
|
|
+ //指定每月的几号
|
|
|
+ couponReckonAmt = this.calCouponDiscount(couponReckonAmt, uc, p);
|
|
|
+ break;
|
|
|
+ case "3":
|
|
|
+ boolean activityDay_3 = this.isActivityDay("3", uc.getAppointedDays());
|
|
|
+ if (activityDay_3)
|
|
|
+ //指定日
|
|
|
+ couponReckonAmt = this.calCouponDiscount(couponReckonAmt, uc, p);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
uc.setCouponReckonAmt(couponReckonAmt);
|
|
|
}
|
|
|
}
|
|
|
//根据支付金额大小进行优惠券排序
|
|
|
+ userCouponsList.sort((((o1, o2) -> o1.getCouponReckonAmt().getAmt().compareTo(o2.getCouponReckonAmt().getAmt()))));
|
|
|
|
|
|
}
|
|
|
}
|
|
|
- return userCouponsCalAndAscList;
|
|
|
+ return userCouponsList;
|
|
|
}
|
|
|
|
|
|
/***
|
|
@@ -1485,7 +1553,6 @@ public class PayOrderController {
|
|
|
discountAmtNew = discountAmtNew.add(couponAmt);
|
|
|
couponReckonAmt.setDiscountAmt(discountAmtNew.toString());
|
|
|
couponReckonAmt.setAmt(amtNew.toString());
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
if(p.getAllDiscountType().equals("2")){
|