|
@@ -1,5 +1,6 @@
|
|
|
package com.platform.yijia.service.impl;
|
|
|
|
|
|
+import com.platform.yijia.dao.CustomerGradeMapper;
|
|
|
import com.platform.yijia.dao.PayOrderMapper;
|
|
|
import com.platform.yijia.param.request.PayOrderRequest;
|
|
|
import com.platform.yijia.pojo.AppUserInfo;
|
|
@@ -24,6 +25,8 @@ import java.util.*;
|
|
|
@Service("payOrderService")
|
|
|
public class PayOrderServiceImpl implements PayOrderService {
|
|
|
@Resource
|
|
|
+ private CustomerGradeMapper customerGradeMapper;
|
|
|
+ @Resource
|
|
|
private PayOrderMapper payOrderMapper;
|
|
|
@Resource
|
|
|
private AppUserInfoService appUserInfoService;
|
|
@@ -47,7 +50,6 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
//System.out.println("随机生成6位数result :"+result);
|
|
|
String ordNo=System.nanoTime()+result;
|
|
|
payOrder.setOrderNo(ordNo);
|
|
|
- payOrder.setDiscountAmt(payOrderRequest.getDiscountAmt()); //优惠金额
|
|
|
payOrder.setDiscountCouponAmt(payOrderRequest.getDiscountCouponAmt()); //优惠劵金额
|
|
|
payOrder.setDiscountCoupon(payOrderRequest.getDiscountCoupon()); //优惠券
|
|
|
payOrder.setCarNo(payOrderRequest.getCarNo()); //车牌号、
|
|
@@ -56,16 +58,16 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
payOrder.setMemberAmt(payOrderRequest.getMemberAmt()); //会员支付金额
|
|
|
payOrder.setPrintCount(payOrderRequest.getPrintCount()); //小票数量
|
|
|
payOrder.setScore(payOrderRequest.getScore()); //积分
|
|
|
- payOrder.setAmt(Double.valueOf(payOrderRequest.getAmt())); //实收金额
|
|
|
payOrder.setStationId(payOrderRequest.getStationId()); //油站id
|
|
|
payOrder.setStatus("0"); //创建订单 未支付状态 0
|
|
|
- payOrder.setPayType("sxf"); //支付类型
|
|
|
if(StringUtils.isNotBlank(payOrderRequest.getUserType())&& payOrderRequest.getUserType().equals("1")){
|
|
|
payOrder.setPayWay("02"); //支付方式:02公众号,03小程序',
|
|
|
payOrder.setWxAmt(Double.valueOf(payOrderRequest.getAmt())); //微信支付金额
|
|
|
+ payOrder.setPayType("wx"); //支付类型
|
|
|
}else if(StringUtils.isNotBlank(payOrderRequest.getUserType())&& payOrderRequest.getUserType().equals("2")){
|
|
|
payOrder.setPayWay("03");
|
|
|
payOrder.setWxAmt(Double.valueOf(payOrderRequest.getAmt())); //微信支付金额
|
|
|
+ payOrder.setPayType("wx"); //支付类型
|
|
|
}
|
|
|
payOrder.setCreatedDate(new Date()); //创建时间
|
|
|
payOrder.setOrderType(payOrderRequest.getOrderType()); //订单类型
|
|
@@ -96,43 +98,74 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
payOrder.setReceivableAmt(receivableAmt);
|
|
|
Double oilPrice = payOrderRequest.getOilPrice(); //获取油价
|
|
|
payOrder.setOilPirce(String.valueOf(oilPrice));
|
|
|
- //计算加油升数
|
|
|
+
|
|
|
+ Double oilLitersCheck= null; //加油升数校验
|
|
|
if(receivableAmt != null && oilPrice != null){
|
|
|
- payOrder.setOrderLiters(recKonOrderLiters(String.valueOf(receivableAmt), String.valueOf(oilPrice), 2));
|
|
|
- }
|
|
|
- String oilName = payOrderRequest.getOilName();
|
|
|
- payOrder.setOilName(oilName); //油品名称
|
|
|
- //根据油品名称存储油品类型 1.柴油 2 汽油
|
|
|
- switch (oilName){
|
|
|
- case "92#":
|
|
|
- payOrder.setOilType("2");
|
|
|
- break;
|
|
|
- case "95#":
|
|
|
- payOrder.setOilType("2");
|
|
|
- break;
|
|
|
- case "97#":
|
|
|
- payOrder.setOilType("2");
|
|
|
- break;
|
|
|
- case "0#":
|
|
|
- payOrder.setOilType("1");
|
|
|
- break;
|
|
|
- case "-10#":
|
|
|
- payOrder.setOilType("1");
|
|
|
- break;
|
|
|
- case "-20#":
|
|
|
- payOrder.setOilType("1");
|
|
|
- break;
|
|
|
+ //计算加油升数
|
|
|
+ oilLitersCheck = recKonOrderLiters(receivableAmt, oilPrice, 2);
|
|
|
+ payOrder.setOrderLiters(String.valueOf(oilLitersCheck));
|
|
|
+
|
|
|
+ //获取该油站的某个油品的优惠方案用作校验前台传来数据 要校验字段:实收金额 优惠金额
|
|
|
+ params.put("oilName", payOrderRequest.getOilName());
|
|
|
+ List<Map> gradeList = customerGradeMapper.getCustomerGradeList(params);
|
|
|
+ Double amtCheck =null; //后台实收金额
|
|
|
+ Double discountAmtCheck = null; //后台优惠金额
|
|
|
+ if(gradeList !=null && gradeList.size()== 1){
|
|
|
+ //如果优惠方式是直降
|
|
|
+ if(gradeList.get(0).get("discountWay").toString().equals("直降")){
|
|
|
+ if(gradeList.get(0).containsKey("gasoilDiscountLitre") && gradeList.get(0).get("gasoilDiscountLitre") !=null){
|
|
|
+ //优惠金额 = 每升优惠价格 x 油升数
|
|
|
+ discountAmtCheck = new BigDecimal(Double.valueOf(gradeList.get(0).get("gasoilDiscountLitre").toString())).multiply(new BigDecimal(oilLitersCheck)).doubleValue();
|
|
|
+ // 实收金额 = 应收金额 - 优惠金额
|
|
|
+ amtCheck = receivableAmt - discountAmtCheck;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //实收金额 优惠金额
|
|
|
+ if (amtCheck.equals(Double.valueOf(payOrderRequest.getAmt())) && discountAmtCheck.equals(Double.valueOf(payOrderRequest.getDiscountAmt()))){
|
|
|
+ payOrder.setAmt(Double.valueOf(payOrderRequest.getAmt()));
|
|
|
+ payOrder.setDiscountAmt(payOrderRequest.getDiscountAmt());
|
|
|
+ String oilName = payOrderRequest.getOilName();
|
|
|
+ payOrder.setOilName(oilName); //油品名称
|
|
|
+ //根据油品名称存储油品类型 1.柴油 2 汽油
|
|
|
+ switch (oilName){
|
|
|
+ case "92#":
|
|
|
+ payOrder.setOilType("2");
|
|
|
+ break;
|
|
|
+ case "95#":
|
|
|
+ payOrder.setOilType("2");
|
|
|
+ break;
|
|
|
+ case "97#":
|
|
|
+ payOrder.setOilType("2");
|
|
|
+ break;
|
|
|
+ case "0#":
|
|
|
+ payOrder.setOilType("1");
|
|
|
+ break;
|
|
|
+ case "-10#":
|
|
|
+ payOrder.setOilType("1");
|
|
|
+ break;
|
|
|
+ case "-20#":
|
|
|
+ payOrder.setOilType("1");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ //数据落地
|
|
|
+ payOrderMapper.insertSelective(payOrder);
|
|
|
+ //根据订单号查询出订单
|
|
|
+ PayOrderExample example=new PayOrderExample();
|
|
|
+ example.or().andOrderNoEqualTo(ordNo);
|
|
|
+ //根据订单号查询返回列表,最好是返回对象
|
|
|
+ List<PayOrder> payOrderList= payOrderMapper.selectByExample(example);
|
|
|
+ //返回订单号
|
|
|
+ ordNo= payOrderList.get(0).getOrderNo();
|
|
|
+ return ordNo;
|
|
|
+ }else {
|
|
|
+ return "0";
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ return "1";
|
|
|
}
|
|
|
- //数据落地
|
|
|
- payOrderMapper.insertSelective(payOrder);
|
|
|
- //根据订单号查询出订单
|
|
|
- PayOrderExample example=new PayOrderExample();
|
|
|
- example.or().andOrderNoEqualTo(ordNo);
|
|
|
- //根据订单号查询返回列表,最好是返回对象
|
|
|
- List<PayOrder> payOrderList= payOrderMapper.selectByExample(example);
|
|
|
- //返回订单号
|
|
|
- ordNo= payOrderList.get(0).getOrderNo();
|
|
|
- return ordNo;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -142,8 +175,8 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
* @param scale 保留小数位数
|
|
|
* @return String
|
|
|
*/
|
|
|
- public String recKonOrderLiters(String str1, String str2, int scale){
|
|
|
- return String.valueOf(new BigDecimal(str1).divide(new BigDecimal(str2), scale, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
+ public Double recKonOrderLiters(Double str1, Double str2, int scale){
|
|
|
+ return new BigDecimal(str1).divide(new BigDecimal(str2), scale, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -246,4 +279,13 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
public void insertCustomer(CustomerManage customerManage) {
|
|
|
payOrderMapper.insertCustomer(customerManage);
|
|
|
}
|
|
|
+
|
|
|
+ /*
|
|
|
+ * 根据手机号更新
|
|
|
+ * @param customerManage
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void updateCustomerByPhoneNumber(CustomerManage customerManage) {
|
|
|
+ payOrderMapper.updateCustomerByPhoneNumber(customerManage);
|
|
|
+ }
|
|
|
}
|