|
@@ -20,193 +20,11 @@ import java.util.*;
|
|
|
|
|
|
@Service("payOrderService")
|
|
|
public class PayOrderServiceImpl implements PayOrderService {
|
|
|
- @Resource
|
|
|
- private CustomerGradeMapper customerGradeMapper;
|
|
|
+
|
|
|
@Resource
|
|
|
private PayOrderMapper payOrderMapper;
|
|
|
- @Resource
|
|
|
- private AppUserInfoService appUserInfoService;
|
|
|
- @Resource
|
|
|
- private StationService stationService;
|
|
|
- @Resource
|
|
|
- private CustomerGradeServices customerGradeServices;
|
|
|
- @Resource
|
|
|
- private ElectronicMembershipCardService electronicMembershipCardService;
|
|
|
-
|
|
|
- /*
|
|
|
- * 添加订单信息
|
|
|
- * @param payOrderRequest
|
|
|
- * @param payOrder
|
|
|
- * @return
|
|
|
- */
|
|
|
- @Override
|
|
|
- @Transactional
|
|
|
- public String AddPayOrderInfo(PayOrderRequest payOrderRequest, PayOrder payOrder) {
|
|
|
-
|
|
|
- //订单规则 时间+6位随机数
|
|
|
- Random random = new Random();
|
|
|
- String result="";
|
|
|
- for(int i=0;i<6;i++){
|
|
|
- result+=random.nextInt(10);
|
|
|
- }
|
|
|
- //System.out.println("随机生成6位数result :"+result);
|
|
|
- String ordNo=System.nanoTime()+result;
|
|
|
- payOrder.setOrderNo(ordNo);
|
|
|
- payOrder.setDiscountCouponAmt(payOrderRequest.getDiscountCouponAmt()); //优惠劵金额
|
|
|
- payOrder.setDiscountCoupon(payOrderRequest.getDiscountCoupon()); //优惠券
|
|
|
- payOrder.setCarNo(payOrderRequest.getCarNo()); //车牌号、
|
|
|
- payOrder.setCustomerGrade(payOrderRequest.getCustomerGrade()); //客户电话
|
|
|
- payOrder.setMemberNo(payOrderRequest.getMemberNo()); //会员卡号
|
|
|
- payOrder.setMemberAmt(payOrderRequest.getMemberAmt()); //会员支付金额
|
|
|
- //payOrder.setPrintCount(payOrderRequest.getPrintCount()); //小票数量
|
|
|
- payOrder.setScore(payOrderRequest.getScore()); //积分
|
|
|
- payOrder.setStationId(payOrderRequest.getStationId()); //油站id
|
|
|
- payOrder.setStatus("0"); //创建订单 未支付状态 0
|
|
|
- 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()); //订单类型
|
|
|
- payOrder.setOilGun(payOrderRequest.getOilGun()); //油枪号
|
|
|
-
|
|
|
- //根据油站和油枪获取加油员和油品价格 油站名称
|
|
|
- HashMap<String, Object> params = new HashMap<>();
|
|
|
- params.put("oliGunNo", payOrderRequest.getOilGun());
|
|
|
- params.put("stationId", payOrderRequest.getStationId());
|
|
|
- String oilPersonnel = "";
|
|
|
- //使用list原因:一个枪号对应多个加油员场景
|
|
|
- List<Map> mapResultList = payOrderMapper.selectPersonelName(params);
|
|
|
- if(mapResultList != null && mapResultList.size() > 0){
|
|
|
- for (Map per : mapResultList){
|
|
|
- if(per.containsKey("personelName") && per.get("personelName").toString() !=null && per.get("personelName").toString() !=""){
|
|
|
- oilPersonnel += per.get("personelName").toString() +",";
|
|
|
- }
|
|
|
- }
|
|
|
- if(oilPersonnel !=""){
|
|
|
- payOrder.setOilPersonnel(oilPersonnel.substring(0, oilPersonnel.length()-1)); //加油员
|
|
|
- }
|
|
|
- if(mapResultList.get(0).containsKey("stationName") && mapResultList.get(0).get("stationName").toString() !="" && mapResultList.get(0).get("stationName").toString() !=null ){
|
|
|
- payOrder.setStationName(mapResultList.get(0).get("stationName").toString()); //油站名称
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //订单类型等于1时表示油品
|
|
|
- if(payOrderRequest.getOrderType().equals("1")){
|
|
|
- Double receivableAmt = payOrderRequest.getReceivableAmt(); //获取应收金额
|
|
|
- payOrder.setReceivableAmt(receivableAmt);
|
|
|
- Double oilPrice = payOrderRequest.getOilPrice(); //获取油价
|
|
|
- payOrder.setOilPirce(String.valueOf(oilPrice));
|
|
|
-
|
|
|
- Double oilLitersCheck= null; //加油升数校验
|
|
|
- if(receivableAmt != null && oilPrice != null){
|
|
|
- //计算加油升数
|
|
|
- oilLitersCheck = recKonOrderLiters(receivableAmt, oilPrice, 2);
|
|
|
- payOrder.setOrderLiters(String.valueOf(oilLitersCheck));
|
|
|
|
|
|
- //实收金额 优惠金额
|
|
|
- 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();
|
|
|
- }else {
|
|
|
- ordNo = "1";
|
|
|
- }
|
|
|
- }else if(payOrderRequest.getOrderType().equals("2")){ //订单类型等于2时表示非油品
|
|
|
- String oilName = payOrderRequest.getOilName();
|
|
|
- payOrder.setOilName(oilName); //非油品名称
|
|
|
- Map<String, String> m = stationService.getStationAppIdAndAppSecret(payOrderRequest.getStationId());
|
|
|
- if(m.containsKey("stationName") && m.get("stationName") !=null){
|
|
|
- payOrder.setStationName(m.get("stationName"));
|
|
|
- }
|
|
|
- payOrder.setReceivableAmt(payOrderRequest.getReceivableAmt()); //非油品应收金额
|
|
|
- payOrder.setAmt(Double.valueOf(payOrderRequest.getAmt())); //非油品金额
|
|
|
- //数据落地
|
|
|
- payOrderMapper.insertSelective(payOrder);
|
|
|
- //根据订单号查询出订单
|
|
|
- PayOrderExample example=new PayOrderExample();
|
|
|
- example.or().andOrderNoEqualTo(ordNo);
|
|
|
- //根据订单号查询返回列表,最好是返回对象
|
|
|
- List<PayOrder> payOrderList= payOrderMapper.selectByExample(example);
|
|
|
- //返回订单号
|
|
|
- ordNo= payOrderList.get(0).getOrderNo();
|
|
|
- }
|
|
|
- return ordNo;
|
|
|
- }
|
|
|
-
|
|
|
- /*
|
|
|
- * 计算加油升数
|
|
|
- * @param str1
|
|
|
- * @param str2
|
|
|
- * @param scale 保留小数位数
|
|
|
- * @return String
|
|
|
- */
|
|
|
- public Double recKonOrderLiters(Double str1, Double str2, int scale){
|
|
|
- return new BigDecimal(str1).divide(new BigDecimal(str2), scale, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
- }
|
|
|
-
|
|
|
- /*
|
|
|
- * 判断油价生效时间是否小于当前时间
|
|
|
- * @param takeEffectDate
|
|
|
- * @return boolean
|
|
|
- */
|
|
|
- public boolean compareEffectTime(String takeEffectDate){
|
|
|
- boolean flag = false;
|
|
|
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
|
|
|
- try {
|
|
|
- Date teDate = df.parse(takeEffectDate);
|
|
|
- String currentTime = df.format(new Date());
|
|
|
- if(teDate.getTime() <= df.parse(currentTime).getTime()){
|
|
|
- flag = true;
|
|
|
- }
|
|
|
- } catch (ParseException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- return flag;
|
|
|
- }
|
|
|
-
|
|
|
- /*
|
|
|
- * 查询订单信息
|
|
|
- * */
|
|
|
+ //查询订单信息
|
|
|
@Override
|
|
|
public List<PayOrder> getPayOrderList(String orderNo) {
|
|
|
PayOrderExample example =new PayOrderExample();
|