diff --git a/api/src/main/java/com/sv/netty/netty/service/impl/ServerMessageHandlerAdapter.java b/api/src/main/java/com/sv/netty/netty/service/impl/ServerMessageHandlerAdapter.java index cbfa439..7d89402 100644 --- a/api/src/main/java/com/sv/netty/netty/service/impl/ServerMessageHandlerAdapter.java +++ b/api/src/main/java/com/sv/netty/netty/service/impl/ServerMessageHandlerAdapter.java @@ -7,6 +7,7 @@ import com.sv.entity.*; import com.sv.mapper.BarcodeEnterLogMapper; import com.sv.mapper.BarcodeMapper; import com.sv.mapper.BarcodeOfflineMapper; +import com.sv.mapper.BarcodeOrderTimeMapper; import com.sv.netty.config.*; import com.sv.netty.netty.service.MessageService; import com.sv.netty.utils.JsonUtils; @@ -73,6 +74,8 @@ public class ServerMessageHandlerAdapter implements MessageService { @Resource private BarcodeEnterLogMapper barcodeEnterLogMapper; + @Resource + private BarcodeOrderTimeMapper barcodeOrderTimeMapper; /** * 处理心跳信息,存储心跳信息 * @param clientId @@ -140,6 +143,14 @@ public class ServerMessageHandlerAdapter implements MessageService { memberEnterVenueLog.setPlatformId(member.getPlatformId() == null ? 1 : member.getPlatformId()); memberEnterVenueLog.setVenueId(venueBarCode.getVenueId()); memberEnterVenueLogService.save(memberEnterVenueLog); + + BarcodeOrderTime lastOrder = barcodeOrderTimeMapper.findLastOrder(member.getId(), venueBarCode.getVenueId()); + // 不需要补交钱且需要退钱 + if (lastOrder.getPayMoney() > 0) { + lastOrder.setPaying(1); + lastOrder.setModifiedTime(new Date()); + barcodeOrderTimeMapper.updateByPrimaryKey(lastOrder); + } doorLockUtil.lockDoor(doorSn); logger.info("用户" + member.getId() + "&" + member.getNickname() + "出场"); writeOffCode(barcode); diff --git a/oms/src/main/java/com/ydd/oms/task/BarcodeTimeOrderTask.java b/oms/src/main/java/com/ydd/oms/task/BarcodeTimeOrderTask.java index 8341539..c6cd3b7 100644 --- a/oms/src/main/java/com/ydd/oms/task/BarcodeTimeOrderTask.java +++ b/oms/src/main/java/com/ydd/oms/task/BarcodeTimeOrderTask.java @@ -87,7 +87,7 @@ public class BarcodeTimeOrderTask { MemberRefund memberRefund = new MemberRefund(); memberRefund.setMemberId(barcodeOrderTime.getMemberId()); memberRefund.setLessonId(1); - memberRefund.setMoney(order.getPrice()); + memberRefund.setMoney(new BigDecimal(barcodeOrderTime.getPayMoney())); memberRefund.setOrderSn(barcodeOrderTime.getOrderSn()); memberRefund.setTransactionId(order.getTradeSn()); memberRefund.setOrderId(order.getId()); diff --git a/service/src/main/java/com/sv/service/api/VenueEnterService.java b/service/src/main/java/com/sv/service/api/VenueEnterService.java index fcdb559..5bbf95c 100644 --- a/service/src/main/java/com/sv/service/api/VenueEnterService.java +++ b/service/src/main/java/com/sv/service/api/VenueEnterService.java @@ -20,7 +20,6 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; -import java.util.stream.Collectors; /** @@ -143,7 +142,7 @@ public class VenueEnterService extends BaseServiceImpl { BarcodeOrderTime lastOrder = barcodeOrderTimeMapper.findLastOrder(memberId, venueId); String enterTime = DateUtilCard.getTimeFromDate(lastOrder.getOrderStart()); Date dateNow = new Date(); - if (dateNow.after(lastOrder.getOrderEnd()) && 2 != lastOrder.getPaying()) { + if (2 != lastOrder.getPaying()) { // 当前时间已经超过订单结束日期,则该订单需要重新补收费 // 取入场的价格 VenuePrice venuePriceEnter = venuePriceService.findPrice(venueId, enterTime); @@ -156,6 +155,7 @@ public class VenueEnterService extends BaseServiceImpl { int hours = (minutes - 1) / 60; // 需要补收的价格 price = price.multiply(new BigDecimal(hours - 1)); + logger.info("用户出场$" + memberId + "$经过时间为" + minutes + "分钟,价格为:"+ price); if (price.compareTo(BigDecimal.ZERO) > 0 ) { checkOrderPaying(memberId); result.setFlg(2); @@ -163,9 +163,7 @@ public class VenueEnterService extends BaseServiceImpl { result.setMsg("您此次入场超过2小时,需补交" + price + "元"); } else { // 不需要补交钱且需要退钱 - lastOrder.setPaying(1); - lastOrder.setPayMoney(price.intValue()); - lastOrder.setModifiedTime(new Date()); + lastOrder.setPayMoney(price.abs().intValue()); barcodeOrderTimeMapper.updateByPrimaryKey(lastOrder); result.setFlg(888); result.setMsg("如要继续订单,请在10分钟内进入,否则将结束订单"); diff --git a/service/src/main/java/com/sv/service/api/config/WechatPayService.java b/service/src/main/java/com/sv/service/api/config/WechatPayService.java index b7ccf98..215eb4b 100644 --- a/service/src/main/java/com/sv/service/api/config/WechatPayService.java +++ b/service/src/main/java/com/sv/service/api/config/WechatPayService.java @@ -222,6 +222,7 @@ public class WechatPayService extends BaseServiceImpl { /** * 退款接口 */ + @Transactional public void refundMoney(MemberRefund memberRefund){ OrderPaySignResponse.WechatPayParam wechatPayParam; try { @@ -287,6 +288,7 @@ public class WechatPayService extends BaseServiceImpl { String refundId = response.getRefundId(); //更新‘用户退款记录表’中微信退款单号 memberRefund.setRefundId(refundId); + memberRefund.setMoney(new BigDecimal(payMoney)); memberRefundService.update(memberRefund); }else{ logger.error("返回的结果为:"+ToStringBuilder.reflectionToString(response)); diff --git a/service/src/main/resources/mybatis/mapper/sv/BarcodeOrderTimeMapper.xml b/service/src/main/resources/mybatis/mapper/sv/BarcodeOrderTimeMapper.xml index d203392..452795f 100644 --- a/service/src/main/resources/mybatis/mapper/sv/BarcodeOrderTimeMapper.xml +++ b/service/src/main/resources/mybatis/mapper/sv/BarcodeOrderTimeMapper.xml @@ -156,7 +156,7 @@ order_end = #{orderEnd,jdbcType=TIMESTAMP}, status = #{status,jdbcType=INTEGER}, paying = #{paying,jdbcType=INTEGER}, - pay_money = #{payMoney,jdbcType=INTEGER} + pay_money = #{payMoney,jdbcType=INTEGER}, order_sn = #{orderSn,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR}