release-20260330 - 修改为手机开门,不扫码。
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user