|  | @@ -22,7 +22,9 @@ import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.vo.res.OrderPayRes;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.common.entity.HttpResponseResult;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.common.exception.BizException;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.common.service.IdGeneratorService;
 | 
	
		
			
				|  |  |  import com.yonge.toolset.utils.collection.MapUtil;
 | 
	
		
			
				|  |  | +import com.yonge.toolset.utils.obj.ObjectUtil;
 | 
	
		
			
				|  |  |  import org.apache.commons.beanutils.BeanUtils;
 | 
	
		
			
				|  |  |  import org.slf4j.Logger;
 | 
	
		
			
				|  |  |  import org.slf4j.LoggerFactory;
 | 
	
	
		
			
				|  | @@ -53,20 +55,22 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
 | 
	
		
			
				|  |  |      private UserOrderPaymentService orderPaymentService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private PaymentSdk paymentSdk;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private IdGeneratorService idGeneratorService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      //验证订单是否可以下单
 | 
	
		
			
				|  |  | -    private static final Map<String, Function<OrderReq, HttpResponseResult<OrderCheckRes>>> checkOrder = new HashMap<>();
 | 
	
		
			
				|  |  | +    private static final Map<OrderTypeEnum, Function<OrderReq, HttpResponseResult<OrderCheckRes>>> checkOrder = new HashMap<>();
 | 
	
		
			
				|  |  |      //插入订单后执行
 | 
	
		
			
				|  |  | -    private static final Map<String, Consumer<UserOrderVo>> orderAfter = new HashMap<>();
 | 
	
		
			
				|  |  | +    private static final Map<OrderTypeEnum, Consumer<UserOrderVo>> orderAfter = new HashMap<>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @PostConstruct
 | 
	
		
			
				|  |  |      private void init() {
 | 
	
		
			
				|  |  |          //vip开通缴费
 | 
	
		
			
				|  |  | -        checkOrder.put(OrderTypeEnum.VIP.getCode(), vipCardRecordService::checkOrder);
 | 
	
		
			
				|  |  | +        checkOrder.put(OrderTypeEnum.VIP, vipCardRecordService::checkOrder);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //vip开通缴费
 | 
	
		
			
				|  |  | -        orderAfter.put(OrderTypeEnum.VIP.getCode(), vipCardRecordService::orderAfter);
 | 
	
		
			
				|  |  | +        orderAfter.put(OrderTypeEnum.VIP, vipCardRecordService::orderAfter);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -137,6 +141,11 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
 | 
	
		
			
				|  |  |          return HttpResponseResult.failed("订单状态异常");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void orderCallback(String data) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      /***
 | 
	
		
			
				|  |  |       * 处理待支付订单
 | 
	
		
			
				|  |  |       * @author liweifan
 | 
	
	
		
			
				|  | @@ -157,7 +166,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
 | 
	
		
			
				|  |  |          deviceInfo.setDevice_ip(payReq.getIpAddress());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          paymentReq.setDevice_info(deviceInfo);
 | 
	
		
			
				|  |  | -        paymentReq.setNotify_url("异步通知地址");
 | 
	
		
			
				|  |  | +        //todo 异步通知地址
 | 
	
		
			
				|  |  | +        //paymentReq.setNotify_url("异步通知地址");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (PayChannelEnum.wx_lite.equals(payReq.getPayChannel())) {
 | 
	
		
			
				|  |  |              Map<String, Object> expend = new HashMap<>();
 | 
	
	
		
			
				|  | @@ -169,16 +179,10 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          OrderPayRes orderPayRes = new OrderPayRes();
 | 
	
		
			
				|  |  |          orderPayRes.setPay_amt(detail.getActualPrice().setScale(2).toString());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        orderPayRes.setPay_info(
 | 
	
		
			
				|  |  | -                MapUtil.populateMap(new HashMap<>(), res.get("expend"))
 | 
	
		
			
				|  |  | -                        .get("pay_info").toString()
 | 
	
		
			
				|  |  | -        );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        UserOrderPayment orderPayment = insertOrderPayment(res, payReq);
 | 
	
		
			
				|  |  | +        String pay_info =  ((JSONObject)res.get("expend")).getString("pay_info");
 | 
	
		
			
				|  |  | +        orderPayRes.setPay_info(pay_info);
 | 
	
		
			
				|  |  |          //入订单付款表,同时修改订单状态
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        UserOrderPayment orderPayment = insertOrderPayment(res, payReq);
 | 
	
		
			
				|  |  |          return HttpResponseResult.succeed(orderPayRes);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -187,28 +191,15 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
 | 
	
		
			
				|  |  |          orderPayment.setOrderNo(payReq.getOrderNo());
 | 
	
		
			
				|  |  |          orderPayment.setPayChannel(payReq.getPayChannel());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        try {
 | 
	
		
			
				|  |  | -            orderPayment.setTransNo(res.get("id").toString());
 | 
	
		
			
				|  |  | -            orderPayment.setPayAmt(
 | 
	
		
			
				|  |  | -                    new BigDecimal(res.get("pay_amt").toString()).setScale(2)
 | 
	
		
			
				|  |  | -            );
 | 
	
		
			
				|  |  | -            String pay_info = MapUtil.populateMap(new HashMap<>(), res.get("expend"))
 | 
	
		
			
				|  |  | -                    .get("pay_info").toString();
 | 
	
		
			
				|  |  | -            orderPayment.setPayInfo(pay_info);
 | 
	
		
			
				|  |  | -            orderPayment.setStatus(PayStatusEnum.pending);
 | 
	
		
			
				|  |  | -        } catch (Exception e) {
 | 
	
		
			
				|  |  | -            //保存异常信息
 | 
	
		
			
				|  |  | -            Map<String, Object> errMsg = new HashMap<>();
 | 
	
		
			
				|  |  | -            errMsg.put("error_code", res.get("error_code"));
 | 
	
		
			
				|  |  | -            errMsg.put("error_type", res.get("error_type"));
 | 
	
		
			
				|  |  | -            errMsg.put("error_msg", res.get("error_msg"));
 | 
	
		
			
				|  |  | -            errMsg.put("status", res.get("status"));
 | 
	
		
			
				|  |  | -            errMsg.put("invalid_param", res.get("invalid_param"));
 | 
	
		
			
				|  |  | -            orderPayment.setPayFailMsg(JSONObject.toJSONString(errMsg));
 | 
	
		
			
				|  |  | -            orderPayment.setStatus(PayStatusEnum.failed);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        orderPayment.setTransNo(res.get("id").toString());
 | 
	
		
			
				|  |  | +        orderPayment.setPayAmt(
 | 
	
		
			
				|  |  | +                new BigDecimal(res.get("pay_amt").toString()).setScale(2)
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  | +        String pay_info =  ((JSONObject)res.get("expend")).getString("pay_info");
 | 
	
		
			
				|  |  | +        orderPayment.setPayInfo(pay_info);
 | 
	
		
			
				|  |  | +        orderPayment.setStatus(PayStatusEnum.pending);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        orderPaymentService.save(orderPayment);
 | 
	
		
			
				|  |  |          return orderPayment;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -233,8 +224,9 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      private UserOrderVo insertOrder(OrderReq orderReq, OrderCheckRes data) {
 | 
	
		
			
				|  |  |          UserOrder userOrder = new UserOrder();
 | 
	
		
			
				|  |  | -        //todo 订单号生产规则
 | 
	
		
			
				|  |  | -        userOrder.setOrderNo("123");
 | 
	
		
			
				|  |  | +        //订单号生成
 | 
	
		
			
				|  |  | +        Long orderNo = idGeneratorService.generatorId("userOrder");
 | 
	
		
			
				|  |  | +        userOrder.setOrderNo(orderNo.toString());
 | 
	
		
			
				|  |  |          userOrder.setUserId(orderReq.getUserId());
 | 
	
		
			
				|  |  |          userOrder.setMerchId(data.getMerchId());
 | 
	
		
			
				|  |  |          userOrder.setOrderName(orderReq.getOrderName());
 |