release-20260330 - 修改为手机开门,不扫码。

This commit is contained in:
2026-03-30 10:58:00 +08:00
parent 0d5c4af3a6
commit c0b011c098
13 changed files with 260 additions and 96 deletions

View File

@@ -2,6 +2,7 @@ package com.sv.service.api;
import com.enums.MoneyLogEnum;
import com.enums.PayTypeEnum;
import com.enums.VenueTypeEnum;
import com.github.pagehelper.PageHelper;
import com.sv.dto.api.MemberLessonTicketDetailDTO;
import com.sv.dto.api.wechat.BaseResult;
@@ -22,6 +23,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
@@ -184,24 +186,24 @@ public class MemberRefundService extends BaseServiceImpl {
memberRefund.setSuccessTime(time);
memberRefundMapper.update(memberRefund);
Integer venueType = null;
// 如果是球场订单(更新总退款金额) add by limqsh
BarcodeOrderTime barcodeOrderTime = barcodeOrderTimeMapper.selectByPrimaryKey(memberRefund.getLessonId());
if (barcodeOrderTime != null) {
venueType = VenueTypeEnum.BASKETBALL.value;
if (barcodeOrderTime.getOrderSn() != null
&& barcodeOrderTime.getOrderSn().equals(memberRefund.getOrderSn())) {
barcodeOrderTime.setSumPayMoney(
(barcodeOrderTime.getSumPayMoney() == null ? 0 : barcodeOrderTime.getSumPayMoney())
+ memberRefund.getMoney().intValue());
barcodeOrderTime.setPayMoney(0);
BigDecimal currentSumPayMoney = barcodeOrderTime.getSumPayMoney() == null ? BigDecimal.ZERO : barcodeOrderTime.getSumPayMoney();
barcodeOrderTime.setSumPayMoney(currentSumPayMoney.add(memberRefund.getMoney()));
barcodeOrderTime.setPayMoney(BigDecimal.ZERO);
barcodeOrderTime.setModifiedTime(new Date());
barcodeOrderTimeMapper.updateByPrimaryKey(barcodeOrderTime);
}
}
// 如果是球场订单(更新总退款金额) add by limqsh end
// 记录到‘用户账单(余额,微信,会员卡)记录’
memberMoneyLogService.create(memberRefund.getMemberId(),platformId,MoneyLogEnum.REFUND.value,memberRefund.getMoney(),PayTypeEnum.WEI_XIN.value,
null,null,null,memberRefund.getLessonId());
null,null,venueType,memberRefund.getLessonId());
}catch (Exception e){
e.printStackTrace();
}

View File

@@ -297,7 +297,7 @@ public class OrderService extends BaseServiceImpl {
BarcodeOrderTime lastOrder = barcodeOrderTimeMapper.findLastOrder(memberId, venueId);
if (lastOrder != null) {
lastOrder.setPaying(1);
lastOrder.setPayMoney(-1);
lastOrder.setPayMoney(new BigDecimal(-1));
lastOrder.setOrderAddSn(order.getOrderSn());
// lastOrder.setOrderSn(order.getOrderSn());
lastOrder.setModifiedTime(new Date());

View File

@@ -167,8 +167,9 @@ public class VenueEnterService extends BaseServiceImpl {
result.setMsg("您此次入场" + minutes + "分钟,实际费用" + actualCost + "元,需补交" + difference + "");
} else if (difference.compareTo(BigDecimal.ZERO) < 0) {
BigDecimal refundAmount = difference.abs();
lastOrder.setPayMoney(refundAmount.multiply(new BigDecimal(100)).intValue());
lastOrder.setPayMoney(refundAmount.setScale(2, BigDecimal.ROUND_HALF_UP));
lastOrder.setPaying(1);
lastOrder.setStatus(BarCodeStatusEnum.USED.getValue());
lastOrder.setModifiedTime(new Date());
barcodeOrderTimeMapper.updateByPrimaryKey(lastOrder);
result.setFlg(0);
@@ -272,13 +273,13 @@ public class VenueEnterService extends BaseServiceImpl {
Venue venue = venueMapper.findById(venueId);
createMemberMoneyLog(MoneyLogEnum.JOIN.value, order.getPrice(), memberId, order.getPlatformId(), PayTypeEnum.WEI_XIN.value, null,venue.getId(), venue.getType());
if (EnterEnum.OUT.value != enterFlag) {
Integer timePayHour = 2; // 此处修改押金小时数
Integer timePayHour = 8; // 此处修改押金小时数
if(PayStyleEnum.TIME.getValue() == venue.getPayStyle()){
// 按次入场先收钱,且多久不收钱,出场不收钱
// 该用户上次订单的是否逾期
timePayHour = venue.getTimePayHour();
if (timePayHour == null) {
timePayHour = 4;
timePayHour = 8;
}
}
createBarcodeTimeOrder(memberId,venueId,timePayHour,order.getOrderSn());
@@ -338,7 +339,7 @@ public class VenueEnterService extends BaseServiceImpl {
return memberEnterOrderDTO;
}
public void enterOrderAccount(Integer enterId, Integer payMoney) {
public void enterOrderAccount(Integer enterId, BigDecimal payMoney) {
logger.info("手动结算【" + enterId + "】,结算金额为:" + payMoney);
BarcodeOrderTime barcodeOrder = barcodeOrderTimeMapper.selectByPrimaryKey(enterId);
if (barcodeOrder == null) {
@@ -347,7 +348,7 @@ public class VenueEnterService extends BaseServiceImpl {
if (1 == barcodeOrder.getPaying()) {
throw new ServiceException("订单正在结算,无法结算!");
}
if (payMoney <=0 ) {
if (payMoney.compareTo(BigDecimal.ZERO) <= 0) {
throw new ServiceException("退款金额不能为负数!");
}
String orderSn = barcodeOrder.getOrderSn();
@@ -356,11 +357,12 @@ public class VenueEnterService extends BaseServiceImpl {
throw new ServiceException("订单多次支付(使用超时),无法进行退款!");
}
Order baseOrder = orderMapper.findByOrderSn(orderSn);
if ((barcodeOrder.getSumPayMoney() == null ? 0 : barcodeOrder.getSumPayMoney() + payMoney) > baseOrder.getPrice().intValue()) {
BigDecimal currentSumPayMoney = barcodeOrder.getSumPayMoney() == null ? BigDecimal.ZERO : barcodeOrder.getSumPayMoney();
if (currentSumPayMoney.add(payMoney).compareTo(baseOrder.getPrice()) > 0) {
throw new ServiceException("退款金额不能超过总支付金额!");
}
barcodeOrder.setPaying(1);
barcodeOrder.setPayMoney(payMoney); // 此次支付金额
barcodeOrder.setPayMoney(payMoney);
logger.info("手动结算【" + enterId + "】,结算金额为:" + payMoney + "成功!");
barcodeOrderTimeMapper.updateByPrimaryKey(barcodeOrder);
}

View File

@@ -261,13 +261,14 @@ public class WechatPayService extends BaseServiceImpl {
}
/**
* 退款接口
* 退款接口(支持部分退款)
* @param memberRefund 退款记录
* @param originalAmount 原始订单金额(元)
* @param refundAmount 退款金额(元)
*/
@Transactional
public void refundInputMoney(MemberRefund memberRefund,BigDecimal aMoney){
OrderPaySignResponse.WechatPayParam wechatPayParam;
public void refundInputMoney(MemberRefund memberRefund, BigDecimal originalAmount, BigDecimal refundAmount){
try {
PayConfig payConfig = payConfigService.findKey("face");
Assert.hasText(payConfig.getCert(), "证书找不到");
String nonceStr = CommonUtils.CreateNonceStr(30);
@@ -275,21 +276,18 @@ public class WechatPayService extends BaseServiceImpl {
weChatPayHelper.setAppId(payConfig.getAppId());
weChatPayHelper.setMchId(payConfig.getMchId());
weChatPayHelper.setKey(payConfig.getKey());
Integer payMoney = Integer.valueOf(memberRefund.getMoney().multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP).toString());
Integer refundMoney = Integer.valueOf(aMoney.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP).toString());
// 元转分
Integer payMoney = originalAmount.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
Integer refundMoney = refundAmount.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
weChatPayHelper.setParameter("notify_url", payConfig.getNotifyUrl());
logger.info("申请退款请求参数" + ToStringBuilder.reflectionToString(weChatPayHelper));
// 调用申请退款
// String notifyUrl = "https://api.smartvenue.ydd100.cn//weixin/order/refund";
logger.info("申请退款,原订单金额:" + originalAmount + "元,退款金额:" + refundAmount + "");
OrderResponse response = weChatPayHelper.refund("",memberRefund.getOrderSn(),memberRefund.getOutRefundNo(),payMoney,refundMoney,payConfig.getCancel());
logger.info(ToStringBuilder.reflectionToString(response));
System.out.println(ToStringBuilder.reflectionToString(response));
if (response.isSuccess()) {
String refundId = response.getRefundId();
//更新‘用户退款记录表’中微信退款单号
memberRefund.setRefundId(refundId);
memberRefund.setMoney(aMoney);
memberRefund.setMoney(refundAmount);
memberRefundService.update(memberRefund);
}else{
logger.error("返回的结果为:"+ToStringBuilder.reflectionToString(response));

View File

@@ -14,8 +14,8 @@
<arg column="last_out" jdbcType="TIMESTAMP" javaType="java.util.Date" />
<arg column="status" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="paying" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="pay_money" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="sum_pay_money" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="pay_money" jdbcType="DECIMAL" javaType="java.math.BigDecimal" />
<arg column="sum_pay_money" jdbcType="DECIMAL" javaType="java.math.BigDecimal" />
<arg column="order_sn" jdbcType="VARCHAR" javaType="java.lang.String" />
<arg column="order_add_sn" jdbcType="VARCHAR" javaType="java.lang.String" />
</constructor>
@@ -40,7 +40,7 @@
values (#{id,jdbcType=INTEGER}, #{memberId,jdbcType=INTEGER}, #{venueId,jdbcType=INTEGER},
#{createdTime,jdbcType=TIMESTAMP}, #{modifiedTime,jdbcType=TIMESTAMP}, #{orderStart,jdbcType=TIMESTAMP},
#{orderEnd,jdbcType=TIMESTAMP}, #{lastEnter,jdbcType=TIMESTAMP}, #{lastOut,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER},
#{paying,jdbcType=INTEGER},#{payMoney,jdbcType=INTEGER}, #{sumPayMoney,jdbcType=INTEGER},
#{paying,jdbcType=INTEGER},#{payMoney,jdbcType=DECIMAL}, #{sumPayMoney,jdbcType=DECIMAL},
#{orderSn,jdbcType=VARCHAR},#{orderAddSn,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.sv.entity.BarcodeOrderTime" >
@@ -127,10 +127,10 @@
#{paying,jdbcType=INTEGER},
</if>
<if test="payMoney != null" >
#{payMoney,jdbcType=INTEGER},
#{payMoney,jdbcType=DECIMAL},
</if>
<if test="sumPayMoney != null" >
#{sumPayMoney,jdbcType=INTEGER},
#{sumPayMoney,jdbcType=DECIMAL},
</if>
<if test="orderSn != null" >
#{orderSn,jdbcType=VARCHAR},
@@ -174,10 +174,10 @@
paying = #{paying,jdbcType=INTEGER},
</if>
<if test="payMoney != null" >
pay_money = #{payMoney,jdbcType=INTEGER},
pay_money = #{payMoney,jdbcType=DECIMAL},
</if>
<if test="sumPayMoney != null" >
sum_pay_money = #{sumPayMoney,jdbcType=INTEGER},
sum_pay_money = #{sumPayMoney,jdbcType=DECIMAL},
</if>
<if test="orderSn != null" >
order_sn = #{orderSn,jdbcType=VARCHAR},
@@ -200,11 +200,11 @@
last_out = #{lastOut,jdbcType=TIMESTAMP},
status = #{status,jdbcType=INTEGER},
paying = #{paying,jdbcType=INTEGER},
pay_money = #{payMoney,jdbcType=INTEGER},
sum_pay_money = #{sumPayMoney,jdbcType=INTEGER},
pay_money = #{payMoney,jdbcType=DECIMAL},
sum_pay_money = #{sumPayMoney,jdbcType=DECIMAL},
order_sn = #{orderSn,jdbcType=VARCHAR},
order_add_sn = #{orderAddSn,jdbcType=VARCHAR}
where id = #{id,jdbcType=VARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
<select id="findEffOrder" resultType="int">

View File

@@ -321,7 +321,7 @@
card_type,
venue_id,
venue_type,
lesson_id,
(case when venue_type = '1' then null else lesson_id end) lesson_id,
created_time
FROM
sv_member_money_log