diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index a2f037712..b66a68d66 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/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, "卡券已过期"), diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java index 39046266d..4e70a709f 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java +++ b/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; }