Просмотр исходного кода

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

release_toaliyun_real
Stormeye.Wu 7 лет назад
Родитель
Сommit
cd82702859
2 измененных файлов: 38 добавлений и 46 удалений
  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 Просмотреть файл

@@ -101,10 +101,14 @@ public enum ErrorCode{
ORDER_IS_FAIL(3002, "订单失败"),
ORDER_IS_NOT_FIND(3003, "订单不存在"),
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_USED(4001, "卡券已核销"),
COUPON_ORDER_IS_OVER_TIME(4002, "卡券已过期"),


+ 34
- 46
mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java Просмотреть файл

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

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

@Service
public class WxOrderServiceImpl implements WxOrderService {
@@ -161,11 +157,11 @@ public class WxOrderServiceImpl implements WxOrderService {
coupon = wxCouponMapper.selectByPrimaryKey(couponId);
} catch (Exception e) {
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) {
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);
@@ -173,8 +169,8 @@ public class WxOrderServiceImpl implements WxOrderService {
try {
wxCouponMapper.updateByPrimaryKeySelective(coupon);
} 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 {
//解锁
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();

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

return record;
@@ -272,24 +263,20 @@ public class WxOrderServiceImpl implements WxOrderService {
coupon.getValidEndDate() :
new Date((curr.getTime() / 1000 + coupon.getValidDays() * 24 * 60 * 60) * 1000);
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
@@ -315,7 +302,7 @@ public class WxOrderServiceImpl implements WxOrderService {
}
if (coupon.getStatus() == EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode()) {
logger.error("券已下架, couponId: " + couponIdStr);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_INVALID);
throw new MallinkException(ErrorCode.COUPON_IS_TAKE_OFF);
}
if (coupon.getSalePrice() != 0) {
logger.error("券不免费, couponId: " + couponIdStr);
@@ -350,21 +337,22 @@ public class WxOrderServiceImpl implements WxOrderService {
try {
wxOrderMapper.insertSelective(record);
} catch (Exception e) {
//加库存
// 库存恢复
stockBack(record);
logger.error("保存订单:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
throw new MallinkException(ErrorCode.ORDER_SAVE_ERR);
}

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


return record;
}

@@ -379,7 +367,7 @@ public class WxOrderServiceImpl implements WxOrderService {
}
if (coupon.getStatus() == EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode()) {
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());
if (user == null) {
@@ -395,14 +383,14 @@ public class WxOrderServiceImpl implements WxOrderService {
ret = wxOrderMapper.updateByPrimaryKey(updateOrder);
} catch (Exception e) {
logger.error("订单更新失败:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(), "订单更新失败:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_UPDATE_ERR);
}
// 创建couponOrder
try {
createCouponOrder(user, updateOrder, coupon);
} catch (Exception e) {
logger.error("保存订单:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR);
}
return ret;
}
@@ -418,19 +406,19 @@ public class WxOrderServiceImpl implements WxOrderService {
stockBack(updateOrder);
} catch (Exception e) {
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;
}
}
updateOrder.setOrderStatus(enumOrderStatus.getCode());
updateOrder.setUpdateDate(currentDate);
int ret = 0;
try {
updateOrder.setOrderStatus(enumOrderStatus.getCode());
updateOrder.setUpdateDate(currentDate);
ret = wxOrderMapper.updateByPrimaryKey(updateOrder);
} catch (Exception e) {
logger.error("订单状态更新失败, e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "订单状态更新失败, e:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_UPDATE_ERR);
}
return ret;
}


Загрузка…
Отмена
Сохранить