Procházet zdrojové kódy

//update ordercancel

release_toaliyun_real
xhxu před 4 roky
rodič
revize
2019d200b5
6 změnil soubory, kde provedl 112 přidání a 42 odebrání
  1. +43
    -3
      mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java
  2. +3
    -37
      mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java
  3. +2
    -0
      mallinkService/src/main/java/com/iformall/service/WxOrderService.java
  4. +1
    -0
      mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java
  5. +26
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java
  6. +37
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java

+ 43
- 3
mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java Zobrazit soubor

@@ -1,7 +1,9 @@
package com.iformall.controller; package com.iformall.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode; import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker;
import com.iformall.common.Result; import com.iformall.common.Result;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.dto.OrderComposeSaveDto; import com.iformall.domain.dto.OrderComposeSaveDto;
@@ -14,6 +16,8 @@ import com.iformall.domain.vo.WxOrderCouponVo;
import com.iformall.enums.*; import com.iformall.enums.*;
import com.iformall.exception.MallinkException; import com.iformall.exception.MallinkException;
import com.iformall.service.*; import com.iformall.service.*;
import com.iformall.service.order.OrderFactory;
import com.iformall.service.order.entity.WxComposeOrder;
import com.iformall.utils.Constant; import com.iformall.utils.Constant;
import com.iformall.utils.RedisLock; import com.iformall.utils.RedisLock;


@@ -61,6 +65,15 @@ public class WxOrderController extends BaseController {
@Autowired @Autowired
private WxRefundOrderService wxRefundOrderService; private WxRefundOrderService wxRefundOrderService;


@Autowired
private WxPayOrderService wxPayOrderService;

@Autowired
private WxPayAccountService wxPayAccountService;

@Autowired
private OrderFactory orderFactory;

@Autowired @Autowired
@Qualifier("couponDetailRedisTemplate") @Qualifier("couponDetailRedisTemplate")
RedisTemplate<String, WxCouponCVo> cdRedisTemplate; RedisTemplate<String, WxCouponCVo> cdRedisTemplate;
@@ -142,10 +155,37 @@ public class WxOrderController extends BaseController {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "orderId: " + orderIdStr + ", e: " + e.getMessage()); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "orderId: " + orderIdStr + ", e: " + e.getMessage());
} }
try { try {
WxOrder order = wxOrderService.getById(orderId,getTenantInfo().getTenantId());
if (order != null) {
wxOrderService.updateOrderStatus(order, EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL);

WxPayOrder porderq = new WxPayOrder();
porderq.updateTenantInfo(getTenantInfo());
porderq.setOrderId(orderId);
WxPayOrder payOrder = wxPayOrderService.getByObj(porderq);

if (null != payOrder) {
WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(payOrder.getComposeOrder()).getComposeOrder(payOrder.getOrderId(), payOrder.getTenantId());
//查询微信订单状态并更新

boolean hasCompleted = wxPayOrderService.hasCompleted(composeOrder,payOrder);
if (!hasCompleted) {
WxAppinfo appInfo = wxAppinfoService.getCAppInfo(payOrder, EnumPayWay.getEnum(payOrder.getPayVendor()).getPlat());
WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId());
try {
WxPayOrder wo = wxPayOrderService.handleWxOrderQuery(payOrder, composeOrder,appInfo, payAccount, IdWorker.get(),false);
if (null == wo) {
return new ResultData(ErrorCode.PAY_ORDER_ERROR, "查询微信订单支付状态失败,请稍后!");
}
}catch(MallinkException e) {
if(e.getErrorCode() == ErrorCode.PAY_ORDER_PAYING.getCode()){
return new ResultData(ErrorCode.PAY_ORDER_PAYING, "查询微信订单支付中,请稍后!");
}
}
}
} }

WxBatchOrder batchOrder = new WxBatchOrder();
batchOrder.updateTenantInfo(getTenantInfo());
batchOrder.setId(orderId);
wxOrderService.cancelOrderBatchOrder(batchOrder,payOrder);
} catch (Exception e) { } catch (Exception e) {
logger.error("取消订单失败: " + e.getMessage()); logger.error("取消订单失败: " + e.getMessage());
return new ResultData(ErrorCode.ORDER_IS_FAIL.getCode(), "取消订单失败: " + e.getMessage()); return new ResultData(ErrorCode.ORDER_IS_FAIL.getCode(), "取消订单失败: " + e.getMessage());


+ 3
- 37
mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java Zobrazit soubor

@@ -178,7 +178,7 @@ public class WxPayOrderController extends BaseController {
payOrder.setPayOrderStatus(status); payOrder.setPayOrderStatus(status);
payOrder.setFailReason(reasonStr); payOrder.setFailReason(reasonStr);
payOrder.updateTenantInfo(getTenantInfo()); payOrder.updateTenantInfo(getTenantInfo());
payOrder.setPayVendor(EnumPayWay.PAY_WAY_WECHAT.getCode());
payOrder.setPayVendor(getPayWay().getCode());


try { try {
//有价券支付成功 //有价券支付成功
@@ -197,7 +197,7 @@ public class WxPayOrderController extends BaseController {
WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(payOrder.getComposeOrder()).getComposeOrder(payOrder.getOrderId(), payOrder.getTenantId()); WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(payOrder.getComposeOrder()).getComposeOrder(payOrder.getOrderId(), payOrder.getTenantId());
//查询微信订单状态并更新 //查询微信订单状态并更新
boolean hasCompleted = hasCompleted(composeOrder,payOrder);
boolean hasCompleted = wxPayOrderService.hasCompleted(composeOrder,payOrder);
if (hasCompleted) { if (hasCompleted) {
return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder); return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder);
} }
@@ -237,41 +237,7 @@ public class WxPayOrderController extends BaseController {
return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage());
} }
} }
private boolean hasCompleted(WxComposeOrder composeOrder,WxPayOrder payOrder) {
if (EnumComposeOrder.isSingle(composeOrder.getComposeOrderType())) {
WxOrder order = composeOrder.getSingleOrder();
if (null == order) {
throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "未查询到Order["+payOrder.getOrderId()+"].");
}
WxCoupon wxCoupon = wxCouponService.getById(order.getProductId(),order.getTenantId());
if (null == wxCoupon) {
throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "未查询到优惠券[orderId:"+payOrder.getOrderId()+"].");
}
//拼团的订单,如果查询到是拼团待付款的,则重新查询是否已经真的支付,其他的直接返回订单信息
if (wxPayOrderService.isOrderGroupCoupon(payOrder, wxCoupon)) {
if (!order.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode())) {
return true;
}
}else {
//非拼团的订单,支付成功,关闭订单,撤销支付订单,支付转退款的,直接返回订单信息,其他需要查询真实支付状态
if (payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())||
payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_CLOSE.getCode())||
payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REVERSE.getCode())||
payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REFUND.getCode())) {
return true;
}
}
}else {
if (payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())||
payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_CLOSE.getCode())||
payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REVERSE.getCode())||
payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REFUND.getCode())) {
return true;
}
}
return false;
}

@ApiOperation("分页列表接口") @ApiOperation("分页列表接口")
@GetMapping("/list") @GetMapping("/list")


+ 2
- 0
mallinkService/src/main/java/com/iformall/service/WxOrderService.java Zobrazit soubor

@@ -252,4 +252,6 @@ public interface WxOrderService {
PageInfo<WxBatchOrder> listBatchOrderAsPage(WxOrder wxOrder, Integer pageNum, Integer pageSize); PageInfo<WxBatchOrder> listBatchOrderAsPage(WxOrder wxOrder, Integer pageNum, Integer pageSize);


WxBatchOrder batchOrderDetail(WxBatchOrder border); WxBatchOrder batchOrderDetail(WxBatchOrder border);

void cancelOrderBatchOrder(WxBatchOrder border,WxPayOrder payOrder);
} }

+ 1
- 0
mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java Zobrazit soubor

@@ -156,4 +156,5 @@ public interface WxPayOrderService {
public boolean isOrderGroupCoupon(WxPayOrder record, WxCoupon wxCoupon); public boolean isOrderGroupCoupon(WxPayOrder record, WxCoupon wxCoupon);




boolean hasCompleted(WxComposeOrder composeOrder, WxPayOrder payOrder);
} }

+ 26
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java Zobrazit soubor

@@ -17,6 +17,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;


import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.iformall.common.Result;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.domain.po.msg.*; import com.iformall.domain.po.msg.*;
import com.iformall.domain.po.tt.TtCUser; import com.iformall.domain.po.tt.TtCUser;
@@ -3407,6 +3408,31 @@ public class WxOrderServiceImpl implements WxOrderService {
return wxBatchOrder; return wxBatchOrder;
} }


@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void cancelOrderBatchOrder(WxBatchOrder border,WxPayOrder payOrder) {
WxBatchOrder wxBatchOrder = wxBatchOrderMapper.selectOne(new QueryWrapper<>(border));
if(wxBatchOrder == null){
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}
WxOrder orderq = new WxOrder();
orderq.updateTenantInfo(wxBatchOrder);
orderq.setComposeOrderId(wxBatchOrder.getId());
List<WxOrder> orderList = wxOrderMapper.findList(orderq);

if(payOrder == null || !EnumPayStatus.PAY_STATUS_SUCCESS.getCode().equals(payOrder.getPayOrderStatus())){
try {
for (WxOrder o : orderList) {
this.updateOrderStatus(o, EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL);
}
} catch (Exception e) {
logger.error(e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL);
}
}

}

private Map<Long,List<WxOrderCouponVo>> getBatchOrderMap(TenantEntity tenantEntity,List<Long> batchOrderIds){ private Map<Long,List<WxOrderCouponVo>> getBatchOrderMap(TenantEntity tenantEntity,List<Long> batchOrderIds){
WxOrder recordQ = new WxOrder(); WxOrder recordQ = new WxOrder();
recordQ.updateTenantInfo(tenantEntity); recordQ.updateTenantInfo(tenantEntity);


+ 37
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java Zobrazit soubor

@@ -945,8 +945,43 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
return wxCoupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode()) && wxCoupon.getSalePrice().equals(record.getPayAmount()); return wxCoupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode()) && wxCoupon.getSalePrice().equals(record.getPayAmount());
} }


@Override
public boolean hasCompleted(WxComposeOrder composeOrder, WxPayOrder payOrder) {
if (EnumComposeOrder.isSingle(composeOrder.getComposeOrderType())) {
WxOrder order = composeOrder.getSingleOrder();
if (null == order) {
throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "未查询到Order["+payOrder.getOrderId()+"].");
}
WxCoupon wxCoupon = wxCouponMapper.selectById(order.getProductId(),order.getTenantId());
if (null == wxCoupon) {
throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "未查询到优惠券[orderId:"+payOrder.getOrderId()+"].");
}
//拼团的订单,如果查询到是拼团待付款的,则重新查询是否已经真的支付,其他的直接返回订单信息
if (this.isOrderGroupCoupon(payOrder, wxCoupon)) {
if (!order.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode())) {
return true;
}
}else {
//非拼团的订单,支付成功,关闭订单,撤销支付订单,支付转退款的,直接返回订单信息,其他需要查询真实支付状态
if (payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())||
payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_CLOSE.getCode())||
payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REVERSE.getCode())||
payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REFUND.getCode())) {
return true;
}
}
}else {
if (payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())||
payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_CLOSE.getCode())||
payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REVERSE.getCode())||
payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REFUND.getCode())) {
return true;
}
}
return false;
}


@Override @Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void handleMicroOrderPaySuccess(Object result,String transcationId,EnumPayWay payWay, WxPayOrder record ,WxMerchantBUser user,WxAppinfo appInfo,PayExtraParam params) { public void handleMicroOrderPaySuccess(Object result,String transcationId,EnumPayWay payWay, WxPayOrder record ,WxMerchantBUser user,WxAppinfo appInfo,PayExtraParam params) {


Načítá se…
Zrušit
Uložit