From 28cde4817a791cf824b2e24c0f047ccc73fcdec1 Mon Sep 17 00:00:00 2001 From: pikachu <1321288662@qq.com> Date: Wed, 11 Aug 2021 19:49:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=85=E5=80=BC=E8=AE=A2=E5=8D=95=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E5=8F=96=E6=B6=88=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/order/RechargeOrderTaskExecute.java | 61 +++++++++++++++++++ .../order/entity/enums/PayStatusEnum.java | 5 +- .../order/trade/service/RechargeService.java | 13 +++- .../serviceimpl/RechargeServiceImpl.java | 11 +++- 4 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 consumer/src/main/java/cn/lili/timetask/handler/impl/order/RechargeOrderTaskExecute.java diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/order/RechargeOrderTaskExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/order/RechargeOrderTaskExecute.java new file mode 100644 index 00000000..b64f740c --- /dev/null +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/order/RechargeOrderTaskExecute.java @@ -0,0 +1,61 @@ +package cn.lili.timetask.handler.impl.order; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.json.JSONUtil; +import cn.lili.modules.order.order.entity.enums.PayStatusEnum; +import cn.lili.modules.order.trade.entity.dos.Recharge; +import cn.lili.modules.order.trade.service.RechargeService; +import cn.lili.modules.system.entity.dos.Setting; +import cn.lili.modules.system.entity.dto.OrderSetting; +import cn.lili.modules.system.entity.enums.SettingEnum; +import cn.lili.modules.system.service.SettingService; +import cn.lili.timetask.handler.EveryMinuteExecute; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 充值订单自动取消(每分钟执行) + * + * @author zhuhai + * @since 2021/3/11 + **/ +@Slf4j +@Component +public class RechargeOrderTaskExecute implements EveryMinuteExecute { + /** + * 充值 + */ + @Autowired + private RechargeService rechargeService; + /** + * 设置 + */ + @Autowired + private SettingService settingService; + + + @Override + public void execute() { + Setting setting = settingService.get(SettingEnum.ORDER_SETTING.name()); + OrderSetting orderSetting = JSONUtil.toBean(setting.getSettingValue(), OrderSetting.class); + if (orderSetting != null && orderSetting.getAutoCancel() != null) { + //充值订单自动取消时间 = 当前时间 - 自动取消时间分钟数 + DateTime cancelTime = DateUtil.offsetMinute(DateUtil.date(), -orderSetting.getAutoCancel()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Recharge::getPayStatus, PayStatusEnum.UNPAID.name()); + //充值订单创建时间 <= 订单自动取消时间 + queryWrapper.le(Recharge::getCreateTime, cancelTime); + List list = rechargeService.list(queryWrapper); + List cancelSnList = list.stream().map(Recharge::getRechargeSn).collect(Collectors.toList()); + for (String sn : cancelSnList) { + rechargeService.rechargeOrderCancel(sn); + } + } + } +} diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/enums/PayStatusEnum.java b/framework/src/main/java/cn/lili/modules/order/order/entity/enums/PayStatusEnum.java index 33188e2c..b32b1a89 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/enums/PayStatusEnum.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/enums/PayStatusEnum.java @@ -11,8 +11,9 @@ public enum PayStatusEnum { /** * 支付状态 */ - UNPAID("未付款"), - PAID("已付款"); + UNPAID("待付款"), + PAID("已付款"), + CANCEL("已取消"); private final String description; diff --git a/framework/src/main/java/cn/lili/modules/order/trade/service/RechargeService.java b/framework/src/main/java/cn/lili/modules/order/trade/service/RechargeService.java index 3c3cd946..e7034250 100644 --- a/framework/src/main/java/cn/lili/modules/order/trade/service/RechargeService.java +++ b/framework/src/main/java/cn/lili/modules/order/trade/service/RechargeService.java @@ -35,11 +35,11 @@ public interface RechargeService extends IService { /** * 支付成功 * - * @param sn 充值订单编号 - * @param receivableNo 流水no + * @param sn 充值订单编号 + * @param receivableNo 流水no * @param paymentMethod 支付方式 */ - void paySuccess(String sn, String receivableNo,String paymentMethod); + void paySuccess(String sn, String receivableNo, String paymentMethod); /** * 根据充值订单号查询充值信息 @@ -49,4 +49,11 @@ public interface RechargeService extends IService { */ Recharge getRecharge(String sn); + /** + * 充值订单取消 + * + * @param sn 充值订单sn + */ + void rechargeOrderCancel(String sn); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/trade/serviceimpl/RechargeServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/trade/serviceimpl/RechargeServiceImpl.java index e1baf0dc..0c905c44 100644 --- a/framework/src/main/java/cn/lili/modules/order/trade/serviceimpl/RechargeServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/trade/serviceimpl/RechargeServiceImpl.java @@ -77,7 +77,7 @@ public class RechargeServiceImpl extends ServiceImpl i } @Override - public void paySuccess(String sn, String receivableNo,String paymentMethod) { + public void paySuccess(String sn, String receivableNo, String paymentMethod) { //根据sn获取支付账单 Recharge recharge = this.getOne(new QueryWrapper().eq("recharge_sn", sn)); //如果支付账单不为空则进行一下逻辑 @@ -103,4 +103,13 @@ public class RechargeServiceImpl extends ServiceImpl i throw new ServiceException(ResultCode.ORDER_NOT_EXIST); } + + @Override + public void rechargeOrderCancel(String sn) { + Recharge recharge = this.getOne(new QueryWrapper().eq("recharge_sn", sn)); + if (recharge != null) { + recharge.setPayStatus(PayStatusEnum.CANCEL.name()); + this.updateById(recharge); + } + } } \ No newline at end of file