fix 支付回调,订单结算逻辑 & 账单查询bug
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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分钟内进入,否则将结束订单");
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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}
|
||||
</update>
|
||||
|
||||
Reference in New Issue
Block a user