Przeglądaj źródła

[订单状态整理][修改]:订单出错状态整理

release_toaliyun_real
Stormeye.Wu 7 lat temu
rodzic
commit
cd82702859
2 zmienionych plików z 38 dodań i 46 usunięć
  1. +4
    -0
      mallinkService/src/main/java/com/simple/common/ErrorCode.java
  2. +34
    -46
      mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java

+ 4
- 0
mallinkService/src/main/java/com/simple/common/ErrorCode.java Wyświetl plik

@@ -101,10 +101,14 @@ public enum ErrorCode{
ORDER_IS_FAIL(3002, "订单失败"), ORDER_IS_FAIL(3002, "订单失败"),
ORDER_IS_NOT_FIND(3003, "订单不存在"), ORDER_IS_NOT_FIND(3003, "订单不存在"),
ORDER_IS_NOT_PAY(3004, "订单已不能进行支付"), ORDER_IS_NOT_PAY(3004, "订单已不能进行支付"),
ORDER_SAVE_ERR(3005,"订单保存失败"),
ORDER_UPDATE_ERR(3006,"订单更新失败"),
REMAIN_BACK_FAIL(3007, "库存恢复失败"),


/** /**
* 卡券 * 卡券
*/ */
COUPON_ORDER_SAVE_ERR(3999, "卡券保存失败"),
COUPON_ORDER_IS_NULL(4000, "卡券不存在"), COUPON_ORDER_IS_NULL(4000, "卡券不存在"),
COUPON_ORDER_IS_USED(4001, "卡券已核销"), COUPON_ORDER_IS_USED(4001, "卡券已核销"),
COUPON_ORDER_IS_OVER_TIME(4002, "卡券已过期"), COUPON_ORDER_IS_OVER_TIME(4002, "卡券已过期"),


+ 34
- 46
mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java Wyświetl plik

@@ -4,12 +4,10 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.simple.common.ErrorCode; import com.simple.common.ErrorCode;
import com.simple.common.IdWorker; import com.simple.common.IdWorker;
import com.simple.common.ResultData;
import com.simple.domain.po.WxCUser; import com.simple.domain.po.WxCUser;
import com.simple.domain.po.WxCoupon; import com.simple.domain.po.WxCoupon;
import com.simple.domain.po.WxCouponOrder; import com.simple.domain.po.WxCouponOrder;
import com.simple.domain.po.WxOrder; import com.simple.domain.po.WxOrder;
import com.simple.domain.vo.WxCouponOrderCVo;
import com.simple.domain.vo.WxOrderCVo; import com.simple.domain.vo.WxOrderCVo;
import com.simple.enums.*; import com.simple.enums.*;
import com.simple.exception.MallinkException; import com.simple.exception.MallinkException;
@@ -23,9 +21,7 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;


import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;


@Service @Service
public class WxOrderServiceImpl implements WxOrderService { public class WxOrderServiceImpl implements WxOrderService {
@@ -161,11 +157,11 @@ public class WxOrderServiceImpl implements WxOrderService {
coupon = wxCouponMapper.selectByPrimaryKey(couponId); coupon = wxCouponMapper.selectByPrimaryKey(couponId);
} catch (Exception e) { } catch (Exception e) {
logger.error("券未找到, e:" + e.getMessage()); logger.error("券未找到, e:" + e.getMessage());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL.getCode(), "券未找到:" + couponIdStr);
throw new MallinkException(ErrorCode.COUPON_IS_EMPTY);
} }
if (coupon == null) { if (coupon == null) {
logger.error("券未找到, " + couponIdStr); logger.error("券未找到, " + couponIdStr);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL.getCode(), "券未找到:" + couponIdStr);
throw new MallinkException(ErrorCode.COUPON_IS_EMPTY);
} }


coupon.setRemainInventory(coupon.getRemainInventory() + 1); coupon.setRemainInventory(coupon.getRemainInventory() + 1);
@@ -173,8 +169,8 @@ public class WxOrderServiceImpl implements WxOrderService {
try { try {
wxCouponMapper.updateByPrimaryKeySelective(coupon); wxCouponMapper.updateByPrimaryKeySelective(coupon);
} catch (Exception e) { } catch (Exception e) {
logger.error("库存+1失败, e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "库存+1失败, e:" + e.getMessage());
logger.error("数据库更新失败,库存+1失败, e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "库存恢复失败");
} finally { } finally {
//解锁 //解锁
redisLock.unlock(couponIdStr, timeStr); redisLock.unlock(couponIdStr, timeStr);
@@ -214,12 +210,7 @@ public class WxOrderServiceImpl implements WxOrderService {
*/ */


// 减库存操作 // 减库存操作
try {
stockReduce(user, coupon, couponIdStr);
} catch (Exception e) {
logger.error("减库存失败, couponId: " + couponIdStr);
throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(), "减库存失败, couponId: " + couponIdStr);
}
stockReduce(user, coupon, couponIdStr);


Date curr = new Date(); Date curr = new Date();


@@ -250,10 +241,10 @@ public class WxOrderServiceImpl implements WxOrderService {
// 保存订单 // 保存订单
wxOrderMapper.insertSelective(record); wxOrderMapper.insertSelective(record);
} catch (RuntimeException e) { } catch (RuntimeException e) {
// 库存
// 库存恢复
stockBack(record); stockBack(record);
logger.error("保存订单:" + e.getMessage()); logger.error("保存订单:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(), "保存订单失败:" + record.toString());
throw new MallinkException(ErrorCode.ORDER_SAVE_ERR);
} }


return record; return record;
@@ -272,24 +263,20 @@ public class WxOrderServiceImpl implements WxOrderService {
coupon.getValidEndDate() : coupon.getValidEndDate() :
new Date((curr.getTime() / 1000 + coupon.getValidDays() * 24 * 60 * 60) * 1000); new Date((curr.getTime() / 1000 + coupon.getValidDays() * 24 * 60 * 60) * 1000);
final IdWorker idWorker = IdWorker.get(); final IdWorker idWorker = IdWorker.get();
try {
WxCouponOrder couponOrder = new WxCouponOrder();
couponOrder.setId(idWorker.nextId());
couponOrder.setTenantId(user.getTenantId());
couponOrder.setCouponId(order.getCouponId());
couponOrder.setCUserId(user.getId());
couponOrder.setOrderId(order.getOrderNumber());
couponOrder.setExpiredTime(valid_date);
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode());
couponOrder.setCreateDate(curr);
couponOrder.setUpdateDate(curr);
couponOrder.setCouponPrice(order.getPayment());

wxCouponOrderMapper.insertSelective(couponOrder);
} catch (RuntimeException e) {
logger.error("WxCouponOrder:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(), "couponOrder保存失败!");
}

WxCouponOrder couponOrder = new WxCouponOrder();
couponOrder.setId(idWorker.nextId());
couponOrder.setTenantId(user.getTenantId());
couponOrder.setCouponId(order.getCouponId());
couponOrder.setCUserId(user.getId());
couponOrder.setOrderId(order.getOrderNumber());
couponOrder.setExpiredTime(valid_date);
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode());
couponOrder.setCreateDate(curr);
couponOrder.setUpdateDate(curr);
couponOrder.setCouponPrice(order.getPayment());

wxCouponOrderMapper.insertSelective(couponOrder);
} }


@Override @Override
@@ -315,7 +302,7 @@ public class WxOrderServiceImpl implements WxOrderService {
} }
if (coupon.getStatus() == EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode()) { if (coupon.getStatus() == EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode()) {
logger.error("券已下架, couponId: " + couponIdStr); logger.error("券已下架, couponId: " + couponIdStr);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_INVALID);
throw new MallinkException(ErrorCode.COUPON_IS_TAKE_OFF);
} }
if (coupon.getSalePrice() != 0) { if (coupon.getSalePrice() != 0) {
logger.error("券不免费, couponId: " + couponIdStr); logger.error("券不免费, couponId: " + couponIdStr);
@@ -350,21 +337,22 @@ public class WxOrderServiceImpl implements WxOrderService {
try { try {
wxOrderMapper.insertSelective(record); wxOrderMapper.insertSelective(record);
} catch (Exception e) { } catch (Exception e) {
//加库存
// 库存恢复
stockBack(record); stockBack(record);
logger.error("保存订单:" + e.getMessage()); logger.error("保存订单:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
throw new MallinkException(ErrorCode.ORDER_SAVE_ERR);
} }


// 创建couponOrder // 创建couponOrder
try { try {
createCouponOrder(user, record, coupon); createCouponOrder(user, record, coupon);
} catch (Exception e) { } catch (Exception e) {
// 库存恢复
stockBack(record);
logger.error("保存订单:" + e.getMessage()); logger.error("保存订单:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR);
} }



return record; return record;
} }


@@ -379,7 +367,7 @@ public class WxOrderServiceImpl implements WxOrderService {
} }
if (coupon.getStatus() == EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode()) { if (coupon.getStatus() == EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode()) {
logger.error("券已下架, couponId: " + updateOrder.getCouponId()); logger.error("券已下架, couponId: " + updateOrder.getCouponId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_INVALID);
throw new MallinkException(ErrorCode.COUPON_IS_TAKE_OFF);
} }
WxCUser user = wxCUserMapper.selectByPrimaryKey(updateOrder.getCUserId()); WxCUser user = wxCUserMapper.selectByPrimaryKey(updateOrder.getCUserId());
if (user == null) { if (user == null) {
@@ -395,14 +383,14 @@ public class WxOrderServiceImpl implements WxOrderService {
ret = wxOrderMapper.updateByPrimaryKey(updateOrder); ret = wxOrderMapper.updateByPrimaryKey(updateOrder);
} catch (Exception e) { } catch (Exception e) {
logger.error("订单更新失败:" + e.getMessage()); logger.error("订单更新失败:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(), "订单更新失败:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_UPDATE_ERR);
} }
// 创建couponOrder // 创建couponOrder
try { try {
createCouponOrder(user, updateOrder, coupon); createCouponOrder(user, updateOrder, coupon);
} catch (Exception e) { } catch (Exception e) {
logger.error("保存订单:" + e.getMessage()); logger.error("保存订单:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR);
} }
return ret; return ret;
} }
@@ -418,19 +406,19 @@ public class WxOrderServiceImpl implements WxOrderService {
stockBack(updateOrder); stockBack(updateOrder);
} catch (Exception e) { } catch (Exception e) {
logger.error("库存+1失败, e:" + e.getMessage()); logger.error("库存+1失败, e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "库存+1失败, e:" + e.getMessage());
throw new MallinkException(ErrorCode.REMAIN_BACK_FAIL);
} }
break; break;
} }
} }
updateOrder.setOrderStatus(enumOrderStatus.getCode());
updateOrder.setUpdateDate(currentDate);
int ret = 0; int ret = 0;
try { try {
updateOrder.setOrderStatus(enumOrderStatus.getCode());
updateOrder.setUpdateDate(currentDate);
ret = wxOrderMapper.updateByPrimaryKey(updateOrder); ret = wxOrderMapper.updateByPrimaryKey(updateOrder);
} catch (Exception e) { } catch (Exception e) {
logger.error("订单状态更新失败, e:" + e.getMessage()); logger.error("订单状态更新失败, e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "订单状态更新失败, e:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_UPDATE_ERR);
} }
return ret; return ret;
} }


Ładowanie…
Anuluj
Zapisz