|  | @@ -190,48 +190,62 @@ public class OrderController {
 | 
	
		
			
				|  |  |      @RequiresPermissions("order:getProcess")
 | 
	
		
			
				|  |  |      public R getProcess(@PathVariable("orderSn") String orderSn) {
 | 
	
		
			
				|  |  |          OrderProcessRecordEntity orderProcessRecordEntity = orderProcessRecordService.queryObjectByOrderSn(orderSn);
 | 
	
		
			
				|  |  | -        if(orderProcessRecordEntity != null){
 | 
	
		
			
				|  |  | -            if(orderProcessRecordEntity.getShipmentStartTime()!=null){
 | 
	
		
			
				|  |  | -                orderProcessRecordEntity.setShipmentStartTimeStr(DateUtils.format(orderProcessRecordEntity.getShipmentStartTime(),DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  | +        if (orderProcessRecordEntity != null) {
 | 
	
		
			
				|  |  | +            if (orderProcessRecordEntity.getShipmentStartTime() != null) {
 | 
	
		
			
				|  |  | +                orderProcessRecordEntity.setShipmentStartTimeStr(
 | 
	
		
			
				|  |  | +                        DateUtils.format(orderProcessRecordEntity.getShipmentStartTime(), DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(orderProcessRecordEntity.getShipmentSuccTime()!=null){
 | 
	
		
			
				|  |  | -                orderProcessRecordEntity.setShipmentSuccTimeStr(DateUtils.format(orderProcessRecordEntity.getShipmentSuccTime(),DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  | +            if (orderProcessRecordEntity.getShipmentSuccTime() != null) {
 | 
	
		
			
				|  |  | +                orderProcessRecordEntity.setShipmentSuccTimeStr(
 | 
	
		
			
				|  |  | +                        DateUtils.format(orderProcessRecordEntity.getShipmentSuccTime(), DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(orderProcessRecordEntity.getCustomsStartTime()!=null){
 | 
	
		
			
				|  |  | -                orderProcessRecordEntity.setCustomsStartTimeStr(DateUtils.format(orderProcessRecordEntity.getCustomsStartTime(),DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  | +            if (orderProcessRecordEntity.getCustomsStartTime() != null) {
 | 
	
		
			
				|  |  | +                orderProcessRecordEntity.setCustomsStartTimeStr(
 | 
	
		
			
				|  |  | +                        DateUtils.format(orderProcessRecordEntity.getCustomsStartTime(), DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(orderProcessRecordEntity.getCustomsSuccTime()!=null){
 | 
	
		
			
				|  |  | -                orderProcessRecordEntity.setCustomsSuccTimeStr(DateUtils.format(orderProcessRecordEntity.getCustomsSuccTime(),DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  | +            if (orderProcessRecordEntity.getCustomsSuccTime() != null) {
 | 
	
		
			
				|  |  | +                orderProcessRecordEntity.setCustomsSuccTimeStr(
 | 
	
		
			
				|  |  | +                        DateUtils.format(orderProcessRecordEntity.getCustomsSuccTime(), DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(orderProcessRecordEntity.getWaybillStartTime()!=null){
 | 
	
		
			
				|  |  | -                orderProcessRecordEntity.setWaybillStartTimeStr(DateUtils.format(orderProcessRecordEntity.getWaybillStartTime(),DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  | +            if (orderProcessRecordEntity.getWaybillStartTime() != null) {
 | 
	
		
			
				|  |  | +                orderProcessRecordEntity.setWaybillStartTimeStr(
 | 
	
		
			
				|  |  | +                        DateUtils.format(orderProcessRecordEntity.getWaybillStartTime(), DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(orderProcessRecordEntity.getWaybillSuccTime()!=null){
 | 
	
		
			
				|  |  | -                orderProcessRecordEntity.setWaybillSuccTimeStr(DateUtils.format(orderProcessRecordEntity.getWaybillSuccTime(),DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  | +            if (orderProcessRecordEntity.getWaybillSuccTime() != null) {
 | 
	
		
			
				|  |  | +                orderProcessRecordEntity.setWaybillSuccTimeStr(
 | 
	
		
			
				|  |  | +                        DateUtils.format(orderProcessRecordEntity.getWaybillSuccTime(), DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(orderProcessRecordEntity.getEleOrderStartTime()!=null){
 | 
	
		
			
				|  |  | -                orderProcessRecordEntity.setEleOrderStartTimeStr(DateUtils.format(orderProcessRecordEntity.getEleOrderStartTime(),DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  | +            if (orderProcessRecordEntity.getEleOrderStartTime() != null) {
 | 
	
		
			
				|  |  | +                orderProcessRecordEntity.setEleOrderStartTimeStr(
 | 
	
		
			
				|  |  | +                        DateUtils.format(orderProcessRecordEntity.getEleOrderStartTime(), DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(orderProcessRecordEntity.getEleOrderSuccTime()!=null){
 | 
	
		
			
				|  |  | -                orderProcessRecordEntity.setEleOrderSuccTimeStr(DateUtils.format(orderProcessRecordEntity.getEleOrderSuccTime(),DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  | +            if (orderProcessRecordEntity.getEleOrderSuccTime() != null) {
 | 
	
		
			
				|  |  | +                orderProcessRecordEntity.setEleOrderSuccTimeStr(
 | 
	
		
			
				|  |  | +                        DateUtils.format(orderProcessRecordEntity.getEleOrderSuccTime(), DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(orderProcessRecordEntity.getAddOrderStartTime()!=null){
 | 
	
		
			
				|  |  | -                orderProcessRecordEntity.setAddOrderStartTimeStr(DateUtils.format(orderProcessRecordEntity.getAddOrderStartTime(),DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  | +            if (orderProcessRecordEntity.getAddOrderStartTime() != null) {
 | 
	
		
			
				|  |  | +                orderProcessRecordEntity.setAddOrderStartTimeStr(
 | 
	
		
			
				|  |  | +                        DateUtils.format(orderProcessRecordEntity.getAddOrderStartTime(), DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(orderProcessRecordEntity.getAddOrderSuccTime()!=null){
 | 
	
		
			
				|  |  | -                orderProcessRecordEntity.setAddOrderSuccTimeStr(DateUtils.format(orderProcessRecordEntity.getAddOrderSuccTime(),DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  | +            if (orderProcessRecordEntity.getAddOrderSuccTime() != null) {
 | 
	
		
			
				|  |  | +                orderProcessRecordEntity.setAddOrderSuccTimeStr(
 | 
	
		
			
				|  |  | +                        DateUtils.format(orderProcessRecordEntity.getAddOrderSuccTime(), DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(orderProcessRecordEntity.getPaySuccTime()!=null){
 | 
	
		
			
				|  |  | -                orderProcessRecordEntity.setPaySuccTimeStr(DateUtils.format(orderProcessRecordEntity.getPaySuccTime(),DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  | +            if (orderProcessRecordEntity.getPaySuccTime() != null) {
 | 
	
		
			
				|  |  | +                orderProcessRecordEntity.setPaySuccTimeStr(
 | 
	
		
			
				|  |  | +                        DateUtils.format(orderProcessRecordEntity.getPaySuccTime(), DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(orderProcessRecordEntity.getPayStartTime()!=null){
 | 
	
		
			
				|  |  | -                orderProcessRecordEntity.setPayStartTimeStr(DateUtils.format(orderProcessRecordEntity.getPayStartTime(),DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  | +            if (orderProcessRecordEntity.getPayStartTime() != null) {
 | 
	
		
			
				|  |  | +                orderProcessRecordEntity.setPayStartTimeStr(
 | 
	
		
			
				|  |  | +                        DateUtils.format(orderProcessRecordEntity.getPayStartTime(), DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(orderProcessRecordEntity.getPaymentStartTime()!=null){
 | 
	
		
			
				|  |  | -                orderProcessRecordEntity.setPaymentStartTimeStr(DateUtils.format(orderProcessRecordEntity.getPaymentStartTime(),DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  | +            if (orderProcessRecordEntity.getPaymentStartTime() != null) {
 | 
	
		
			
				|  |  | +                orderProcessRecordEntity.setPaymentStartTimeStr(
 | 
	
		
			
				|  |  | +                        DateUtils.format(orderProcessRecordEntity.getPaymentStartTime(), DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(orderProcessRecordEntity.getPaymentSuccTime()!=null){
 | 
	
		
			
				|  |  | -                orderProcessRecordEntity.setPaymentSuccTimeStr(DateUtils.format(orderProcessRecordEntity.getPaymentSuccTime(),DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  | +            if (orderProcessRecordEntity.getPaymentSuccTime() != null) {
 | 
	
		
			
				|  |  | +                orderProcessRecordEntity.setPaymentSuccTimeStr(
 | 
	
		
			
				|  |  | +                        DateUtils.format(orderProcessRecordEntity.getPaymentSuccTime(), DateUtils.DATE_TIME_PATTERN));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return R.ok().put("orderProcessRecordEntity", orderProcessRecordEntity);
 | 
	
	
		
			
				|  | @@ -323,6 +337,71 @@ public class OrderController {
 | 
	
		
			
				|  |  |          return R.ok("退款成功");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 订单退款请求
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @RequiresPermissions(value = {"order:offilineRefund"})
 | 
	
		
			
				|  |  | +    @RequestMapping(value = "offilineRefund", method = RequestMethod.POST)
 | 
	
		
			
				|  |  | +    public Object offilineRefund(Long orderId) {
 | 
	
		
			
				|  |  | +        OrderEntity orderInfo = orderService.queryObject(orderId);
 | 
	
		
			
				|  |  | +        if (null == orderInfo) {
 | 
	
		
			
				|  |  | +            return R.error("订单不存在");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (orderInfo.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_401.getItem()) ||
 | 
	
		
			
				|  |  | +            orderInfo.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_402.getItem())) {
 | 
	
		
			
				|  |  | +            return R.error("订单已退款");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (orderInfo.getOrderStatus() != 0) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            List<OrderWXPayRecordEntity> orderWXPayRecords =
 | 
	
		
			
				|  |  | +                    orderWXPayRecordService.getRecordsByOutTradeNo(orderInfo.getOrderSn());
 | 
	
		
			
				|  |  | +            //支付成功的发送到微信的订单编号
 | 
	
		
			
				|  |  | +            String paySuccessOutTradeNoWX = null;
 | 
	
		
			
				|  |  | +            if (orderWXPayRecords != null) {
 | 
	
		
			
				|  |  | +                for (OrderWXPayRecordEntity orderWXPayRecord : orderWXPayRecords) {
 | 
	
		
			
				|  |  | +                    if ("SUCCESS".equals(orderWXPayRecord.getTradeState())) {
 | 
	
		
			
				|  |  | +                        paySuccessOutTradeNoWX = orderWXPayRecord.getOutTradeNoWX();
 | 
	
		
			
				|  |  | +                        break;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // todo 退款
 | 
	
		
			
				|  |  | +            WechatRefundApiResult result = WechatUtil
 | 
	
		
			
				|  |  | +                    .wxRefund(paySuccessOutTradeNoWX, orderInfo.getActualPrice().doubleValue(),
 | 
	
		
			
				|  |  | +                              orderInfo.getActualPrice().doubleValue());
 | 
	
		
			
				|  |  | +            if (result.getResult_code().equals("SUCCESS")) {
 | 
	
		
			
				|  |  | +                orderService.refund(orderInfo, result);
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                OrderRefundEntity mallOrderRefund = orderRefundService.queryObjectByOrderId(orderInfo.getId());
 | 
	
		
			
				|  |  | +                OrderRefundEntity orderRefund = new OrderRefundEntity();
 | 
	
		
			
				|  |  | +                orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));
 | 
	
		
			
				|  |  | +                orderRefund.setRefundMoney(BigDecimal.valueOf(orderInfo.getActualPrice().doubleValue()));
 | 
	
		
			
				|  |  | +                orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_4.getItem()));
 | 
	
		
			
				|  |  | +                orderRefund.setModTime(new Date());
 | 
	
		
			
				|  |  | +                orderRefund.setOutRefundNo(result.getOut_refund_no());
 | 
	
		
			
				|  |  | +                if (mallOrderRefund != null) {
 | 
	
		
			
				|  |  | +                    orderRefund.setId(mallOrderRefund.getId());
 | 
	
		
			
				|  |  | +                    orderRefundService.update(orderRefund);//退款记录
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                OrderExceptionRecordEntity mallOrderExceptionRecord = new OrderExceptionRecordEntity();
 | 
	
		
			
				|  |  | +                mallOrderExceptionRecord.setUserId(Integer.parseInt(orderInfo.getUserId() + ""));
 | 
	
		
			
				|  |  | +                mallOrderExceptionRecord.setOrderSn(orderInfo.getOrderSn());
 | 
	
		
			
				|  |  | +                mallOrderExceptionRecord.setExceptionStatus(Dict.exceptionStatus.item_03.getItem());
 | 
	
		
			
				|  |  | +                mallOrderExceptionRecord.setExceptionContent("退款失败" + result.getErr_code_des());
 | 
	
		
			
				|  |  | +                mallOrderExceptionRecord.setCreateTime(new Date());
 | 
	
		
			
				|  |  | +                orderExceptionRecordService.save(mallOrderExceptionRecord);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                return R.error(result.getErr_code_des());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return R.ok("退款成功");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 获取首页展示信息--会员购买率相关
 | 
	
		
			
				|  |  |       *
 | 
	
	
		
			
				|  | @@ -343,9 +422,9 @@ public class OrderController {
 | 
	
		
			
				|  |  |          Map resultObj = null;
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  |              SysUserEntity user = ShiroUtils.getUserEntity();
 | 
	
		
			
				|  |  | -            resultObj = orderService.orderSubmit(offlineCartEntityList,user);
 | 
	
		
			
				|  |  | -            if (((Integer)resultObj.get("errno")) != 0) {
 | 
	
		
			
				|  |  | -                return R.error((String)resultObj.get("errmsg"));
 | 
	
		
			
				|  |  | +            resultObj = orderService.orderSubmit(offlineCartEntityList, user);
 | 
	
		
			
				|  |  | +            if (((Integer) resultObj.get("errno")) != 0) {
 | 
	
		
			
				|  |  | +                return R.error((String) resultObj.get("errmsg"));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          } catch (Exception e) {
 | 
	
		
			
				|  |  |              e.printStackTrace();
 |