篮球通过微信支付下订单,出场10分钟结束订单,该退钱退钱

This commit is contained in:
2023-12-31 02:16:06 +08:00
parent a304d49cb4
commit e155801472
13 changed files with 485 additions and 271 deletions

View File

@@ -4,8 +4,17 @@ import com.enums.BarCodeStatusEnum;
import com.enums.StayEnum;
import com.sv.entity.BarcodeOrderTime;
import com.sv.entity.MemberEnterStatus;
import com.sv.entity.MemberRefund;
import com.sv.entity.Order;
import com.sv.mapper.BarcodeOrderTimeMapper;
import com.sv.mapper.MemberEnterStatusMapper;
import com.sv.mapper.MemberRefundMapper;
import com.sv.mapper.OrderMapper;
import com.sv.service.api.config.WechatPayService;
import com.sv.service.api.util.DateUtilCard;
import com.sv.service.oms.OrderService;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
@@ -13,6 +22,7 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@@ -29,6 +39,12 @@ public class BarcodeTimeOrderTask {
@Resource
BarcodeOrderTimeMapper barcodeOrderTimeMapper;
@Resource
OrderMapper orderMapper;
@Resource
MemberRefundMapper memberRefundMapper;
@Resource
WechatPayService wechatPayService;
@Scheduled(cron = "0 0/5 * * * ?")
public void execute(){
@@ -46,4 +62,51 @@ public class BarcodeTimeOrderTask {
}
}
@Scheduled(cron = "0 0/2 * * * ?")
public void refundOrder(){
logger.error("执行BarcodeTimeOrderTask.refundOrder");
// 查询用户已经过期的按次入场订单
List<BarcodeOrderTime> barcodeOrderTimes = barcodeOrderTimeMapper.needPayOrderList();
if (barcodeOrderTimes != null && barcodeOrderTimes.size() > 0){
Date date = new Date();
for (BarcodeOrderTime barcodeOrderTime : barcodeOrderTimes) {
int minutes = DateUtilCard.diffMinute(barcodeOrderTime.getModifiedTime(), date);
if (minutes < 10) {
continue;
}
barcodeOrderTime.setPaying(0);
barcodeOrderTime.setModifiedTime(date);
barcodeOrderTimeMapper.updateByPrimaryKey(barcodeOrderTime);
if (barcodeOrderTime.getPayMoney() <= 0) {
continue;
}
Order order = orderMapper.findOrderSn(barcodeOrderTime.getOrderSn(), barcodeOrderTime.getMemberId());
if (order != null) {
// 找到订单
logger.info("用户" + barcodeOrderTime.getMemberId() + "的订单" + barcodeOrderTime.getOrderSn() + "需要退款" + barcodeOrderTime.getPayMoney());
MemberRefund memberRefund = new MemberRefund();
memberRefund.setMemberId(barcodeOrderTime.getMemberId());
memberRefund.setLessonId(1);
memberRefund.setMoney(order.getPrice());
memberRefund.setOrderSn(barcodeOrderTime.getOrderSn());
memberRefund.setTransactionId(order.getTradeSn());
memberRefund.setOrderId(order.getId());
memberRefund.setOutRefundNo(createSn());//商户退款单号
memberRefund.setPlatformId(1);
memberRefundMapper.insert(memberRefund);
wechatPayService.refundInputMoney(memberRefund,new BigDecimal(barcodeOrderTime.getPayMoney()));
}
}
}
}
/**
* 生成订单号
*
* @return
*/
private String createSn() {
return DateFormatUtils.format(new Date(), "yyMMddHHmmss") + RandomStringUtils.randomNumeric(6);
}
}