diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index 520dc165d..9822b0b11 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/simple/common/ErrorCode.java @@ -77,6 +77,13 @@ public enum ErrorCode{ ORDER_IS_NOT_FIND(3003, "订单不存在"), ORDER_IS_NOT_PAY(3004, "订单已不能进行支付"), + /** + * 卡券 + */ + COUPON_ORDER_IS_USED(4000, "卡券已核销"), + COUPON_ORDER_IS_OVER_TIME(4001, "卡券已过期"), + COUPON_ORDER_IS_INVALID(4002, "卡券已经作废"), + /** * 微信 */ diff --git a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java index 61508b363..ceaf624f0 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java @@ -43,11 +43,17 @@ public interface WxCouponOrderService { * 根据主键Id(券码)核销 * * @param id - * @param mallUserInfo 核销人(登录用户) + * @param mallUserInfo 核销人(登录用户) */ ResultData verify(Long id, MallUserInfo mallUserInfo); - - + + /** + * 根据主键Id(券码)退券(款) + * + * @param id + * @param mallUserInfo 退券(款)人(登录用户) + */ + ResultData refund(Long id, MallUserInfo mallUserInfo); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java index d7a7e29fb..b3245402c 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -2,15 +2,19 @@ package com.simple.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.simple.common.ErrorCode; import com.simple.common.IdWorker; import com.simple.common.Result; import com.simple.common.ResultData; import com.simple.domain.po.MallUserInfo; import com.simple.domain.po.WxCouponOrder; +import com.simple.enums.EnumCouponOrderStatus; import com.simple.mapper.WxCouponOrderMapper; import com.simple.service.WxCouponOrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import java.util.Date; @@ -20,7 +24,6 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Autowired WxCouponOrderMapper wxCouponOrderMapper; - @Override public PageInfo listAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findList(record)); @@ -48,7 +51,10 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { wxCouponOrderMapper.deleteByPrimaryKey(id); } + + @Override + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public ResultData verify(Long id, MallUserInfo mallUserInfo) { WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(id); if (wxCouponOrder.getCouponOrderStatus() == 2) { @@ -69,5 +75,26 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } + @Override + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public ResultData refund(Long id, MallUserInfo mallUserInfo) { + WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(id); + + if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode())) { + return new ResultData(ErrorCode.COUPON_ORDER_IS_OVER_TIME); + } + if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode())) { + return new ResultData(ErrorCode.COUPON_ORDER_IS_INVALID); + } + if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode())) { + return new ResultData(ErrorCode.COUPON_ORDER_IS_USED); + } + + wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废 + wxCouponOrder.setBUserId(mallUserInfo.getId()); + wxCouponOrder.setUpdateDate(new Date()); + wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder); + return new ResultData(wxCouponOrder); + } }