|
@@ -5,10 +5,7 @@ import com.platform.yijia.dao.PayOrderMapper;
|
|
|
import com.platform.yijia.param.request.PayOrderRequest;
|
|
|
import com.platform.yijia.pojo.*;
|
|
|
|
|
|
-import com.platform.yijia.service.AppUserInfoService;
|
|
|
-import com.platform.yijia.service.CustomerGradeServices;
|
|
|
-import com.platform.yijia.service.PayOrderService;
|
|
|
-import com.platform.yijia.service.StationService;
|
|
|
+import com.platform.yijia.service.*;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -33,6 +30,8 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
private StationService stationService;
|
|
|
@Resource
|
|
|
private CustomerGradeServices customerGradeServices;
|
|
|
+ @Resource
|
|
|
+ private ElectronicMembershipCardService electronicMembershipCardService;
|
|
|
|
|
|
/*
|
|
|
* 添加订单信息
|
|
@@ -195,6 +194,7 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
//System.out.println("随机生成6位数result :"+result);
|
|
|
String ordNo=System.nanoTime()+result;
|
|
|
payOrder.setOrderNo(ordNo);
|
|
|
+ resultMap.put("ordNo", ordNo);
|
|
|
payOrder.setDiscountCouponAmt(payOrderRequest.getDiscountCouponAmt()); //优惠劵金额
|
|
|
payOrder.setDiscountCoupon(payOrderRequest.getDiscountCoupon()); //优惠券
|
|
|
payOrder.setCarNo(payOrderRequest.getCarNo()); //车牌号、
|
|
@@ -237,10 +237,15 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //电子会员卡插入消费记录
|
|
|
+ CustomerCardUseRecord customerCardUseRecord = new CustomerCardUseRecord();
|
|
|
+ BigDecimal balance = null; //电子会员卡余额
|
|
|
+
|
|
|
//订单类型等于1时表示油品
|
|
|
if(payOrderRequest.getOrderType().equals("1")){
|
|
|
Double receivableAmt = payOrderRequest.getReceivableAmt(); //获取应收金额
|
|
|
payOrder.setReceivableAmt(receivableAmt);
|
|
|
+ //计算油品订单信息
|
|
|
if(receivableAmt != null){
|
|
|
Integer stationId = payOrderRequest.getStationId(); //油站ID
|
|
|
//String oilGun = payOrderRequest.getOilGun(); //油枪号
|
|
@@ -448,11 +453,35 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+ if(payOrderRequest.getPayType().equals("wx")){
|
|
|
+ payOrder.setWxAmt(Double.valueOf(resultMap.get("amt").toString())); //微信支付金额
|
|
|
+ }else if(payOrderRequest.getPayType().equals("dzk")){
|
|
|
+ payOrder.setDzkAmt(Double.valueOf(resultMap.get("amt").toString()));
|
|
|
+ CustomerElectronicCard customerElectronicCard = new CustomerElectronicCard();
|
|
|
+ customerElectronicCard.setCardOilsType(payOrderRequest.getCardOilsType());
|
|
|
+ customerElectronicCard.setMinaOpenid(payOrderRequest.getOpenId());
|
|
|
+ customerElectronicCard.setStationId(payOrderRequest.getStationId());
|
|
|
+ CustomerElectronicCard cardInfo = electronicMembershipCardService.getElectronicCardInfoByMinaOpenId(customerElectronicCard);
|
|
|
+ if(cardInfo !=null ){
|
|
|
+ customerCardUseRecord.setOrderNo(ordNo);
|
|
|
+ customerCardUseRecord.setUnionId(cardInfo.getUnionId());
|
|
|
+ customerCardUseRecord.setCustomerNo(cardInfo.getCustomerNo());
|
|
|
+ customerCardUseRecord.setAmt(new BigDecimal(resultMap.get("amt").toString()));
|
|
|
+ customerCardUseRecord.setStatus("1");
|
|
|
+ customerCardUseRecord.setCardOilsType(cardInfo.getCardOilsType());
|
|
|
+ customerCardUseRecord.setBalance(cardInfo.getAmt().subtract(new BigDecimal(resultMap.get("amt").toString())));
|
|
|
+ customerCardUseRecord.setStationName(cardInfo.getStationName());
|
|
|
+ customerCardUseRecord.setStationId(cardInfo.getStationId());
|
|
|
+ customerCardUseRecord.setUsageType("-");
|
|
|
+ customerCardUseRecord.setCustomerName(payOrder.getConsumer());
|
|
|
+ customerCardUseRecord.setCreateTime(new Date());
|
|
|
+ balance = cardInfo.getAmt();
|
|
|
+ }
|
|
|
+ }
|
|
|
payOrder.setOilPirce(oilPrice);
|
|
|
payOrder.setOrderLiters(resultMap.get("oilLiters").toString());
|
|
|
payOrder.setDiscountAmt(Double.valueOf(resultMap.get("discountAmt").toString()));
|
|
|
payOrder.setAmt(Double.valueOf(resultMap.get("amt").toString()));
|
|
|
- payOrder.setWxAmt(Double.valueOf(resultMap.get("amt").toString())); //微信支付金额
|
|
|
payOrder.setOilName(oilName); //油品名称
|
|
|
//根据油品名称存储油品类型 1.柴油 2 汽油
|
|
|
switch (oilName){
|
|
@@ -475,16 +504,26 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
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();
|
|
|
- resultMap.put("ordNo", ordNo);
|
|
|
+
|
|
|
+ //判断电子会员卡余额
|
|
|
+ if(payOrderRequest.getPayType().equals("dzk")){
|
|
|
+ if(customerCardUseRecord.getAmt().compareTo(balance) == -1){
|
|
|
+ electronicMembershipCardService.insetCardUseRecord(customerCardUseRecord);
|
|
|
+ //更新电子会员卡余额
|
|
|
+ CustomerElectronicCard c = new CustomerElectronicCard();
|
|
|
+ c.setAmt(balance.subtract(customerCardUseRecord.getAmt()));
|
|
|
+ c.setUnionId(customerCardUseRecord.getUnionId());
|
|
|
+ c.setStationId(customerCardUseRecord.getStationId());
|
|
|
+ c.setCardOilsType(customerCardUseRecord.getCardOilsType());
|
|
|
+ electronicMembershipCardService.updateElectronicCardInfoByUnionId(c);
|
|
|
+ payOrderMapper.insert(payOrder);
|
|
|
+ }else {
|
|
|
+ resultMap.put("balanceNoEnough", "余额不足!");
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ //数据落地
|
|
|
+ payOrderMapper.insertSelective(payOrder);
|
|
|
+ }
|
|
|
}
|
|
|
}else if(payOrderRequest.getOrderType().equals("2")){ //订单类型等于2时表示非油品
|
|
|
String oilName = payOrderRequest.getOilName();
|
|
@@ -495,22 +534,55 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
}
|
|
|
payOrder.setReceivableAmt(payOrderRequest.getReceivableAmt()); //非油品应收金额
|
|
|
payOrder.setAmt(Double.valueOf(payOrderRequest.getReceivableAmt())); //非油品金额
|
|
|
- payOrder.setWxAmt(Double.valueOf(payOrderRequest.getReceivableAmt())); //微信支付金额
|
|
|
payOrder.setDiscountAmt(Double.valueOf(0));
|
|
|
resultMap.put("discountAmt", 0);
|
|
|
resultMap.put("amt", payOrderRequest.getReceivableAmt());
|
|
|
resultMap.put("oilLiters", "0");
|
|
|
resultMap.put("discountPrice", "0");
|
|
|
- //数据落地
|
|
|
- payOrderMapper.insertSelective(payOrder);
|
|
|
- //根据订单号查询出订单
|
|
|
- PayOrderExample example=new PayOrderExample();
|
|
|
- example.or().andOrderNoEqualTo(ordNo);
|
|
|
- //根据订单号查询返回列表,最好是返回对象
|
|
|
- List<PayOrder> payOrderList= payOrderMapper.selectByExample(example);
|
|
|
- //返回订单号
|
|
|
- ordNo= payOrderList.get(0).getOrderNo();
|
|
|
- resultMap.put("ordNo", ordNo);
|
|
|
+ if(payOrderRequest.getPayType().equals("wx")){
|
|
|
+ payOrder.setWxAmt(Double.valueOf(resultMap.get("amt").toString())); //微信支付金额
|
|
|
+ }else if(payOrderRequest.getPayType().equals("dzk")){
|
|
|
+ payOrder.setDzkAmt(Double.valueOf(resultMap.get("amt").toString()));
|
|
|
+ CustomerElectronicCard customerElectronicCard = new CustomerElectronicCard();
|
|
|
+ customerElectronicCard.setCardOilsType(payOrderRequest.getCardOilsType());
|
|
|
+ customerElectronicCard.setMinaOpenid(payOrderRequest.getOpenId());
|
|
|
+ customerElectronicCard.setStationId(payOrderRequest.getStationId());
|
|
|
+ CustomerElectronicCard cardInfo = electronicMembershipCardService.getElectronicCardInfoByMinaOpenId(customerElectronicCard);
|
|
|
+ if(cardInfo !=null ){
|
|
|
+ customerCardUseRecord.setOrderNo(ordNo);
|
|
|
+ customerCardUseRecord.setUnionId(cardInfo.getUnionId());
|
|
|
+ customerCardUseRecord.setCustomerNo(cardInfo.getCustomerNo());
|
|
|
+ customerCardUseRecord.setAmt(new BigDecimal(resultMap.get("amt").toString()));
|
|
|
+ customerCardUseRecord.setStatus("1");
|
|
|
+ customerCardUseRecord.setCustomerName(payOrder.getConsumer());
|
|
|
+ customerCardUseRecord.setCardOilsType(cardInfo.getCardOilsType());
|
|
|
+ customerCardUseRecord.setBalance(cardInfo.getAmt().subtract(new BigDecimal(resultMap.get("amt").toString())));
|
|
|
+ customerCardUseRecord.setStationName(cardInfo.getStationName());
|
|
|
+ customerCardUseRecord.setStationId(cardInfo.getStationId());
|
|
|
+ customerCardUseRecord.setUsageType("-");
|
|
|
+ customerCardUseRecord.setCreateTime(new Date());
|
|
|
+ balance = cardInfo.getAmt();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(payOrderRequest.getPayType().equals("dzk")){
|
|
|
+ //判断电子会员卡余额
|
|
|
+ if(customerCardUseRecord.getAmt().compareTo(balance) == -1){
|
|
|
+ electronicMembershipCardService.insetCardUseRecord(customerCardUseRecord);
|
|
|
+ //更新电子会员卡余额
|
|
|
+ CustomerElectronicCard c = new CustomerElectronicCard();
|
|
|
+ c.setAmt(balance.subtract(customerCardUseRecord.getAmt()));
|
|
|
+ c.setUnionId(customerCardUseRecord.getUnionId());
|
|
|
+ c.setStationId(customerCardUseRecord.getStationId());
|
|
|
+ c.setCardOilsType(customerCardUseRecord.getCardOilsType());
|
|
|
+ electronicMembershipCardService.updateElectronicCardInfoByUnionId(c);
|
|
|
+ payOrderMapper.insertSelective(payOrder);
|
|
|
+ }else {
|
|
|
+ resultMap.put("balanceNoEnough", "余额不足!");
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ //数据落地
|
|
|
+ payOrderMapper.insertSelective(payOrder);
|
|
|
+ }
|
|
|
}
|
|
|
return resultMap;
|
|
|
}
|