实时分账

This commit is contained in:
Guoqs
2024-09-12 11:31:04 +08:00
parent f7171d7efe
commit 8859858cab
5 changed files with 18 additions and 29 deletions

View File

@@ -1,5 +1,6 @@
package com.jsowell.adapay.common;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
@@ -10,14 +11,18 @@ import lombok.Setter;
@Setter
public class DivMember {
// 分账用户 Member对象 的 id若是商户本身时传入0
private String member_id;
@JsonProperty(value = "member_id")
private String memberId;
// 分账金额精确到分如0.501.00等,分账总金额必须等于主交易金额,金额不能为0.00
@JsonProperty(value = "amount")
private String amount;
// 是否手续费承担方N-否Y-是,手续费承担方有且只能有一个
private String fee_flag;
@JsonProperty(value = "fee_flag")
private String feeFlag;
// 控制台 主页面应用的app_id不上送默认取商户自身app_id
private String app_id;
@JsonProperty(value = "app_id")
private String appId;
}

View File

@@ -975,9 +975,9 @@ public class AdapayService {
confirmParams.put("description", jsonObject.toJSONString());
// 分账对象信息 一次最多7个
DivMember divMember = new DivMember();
divMember.setMember_id(adapayMemberAccount.getAdapayMemberId());
divMember.setMemberId(adapayMemberAccount.getAdapayMemberId());
divMember.setAmount(AdapayUtil.formatAmount(confirmAmt));
divMember.setFee_flag(Constants.Y);
divMember.setFeeFlag(Constants.Y);
confirmParams.put("div_members", Lists.newArrayList(divMember));
Map<String, Object> paymentConfirm = null;
try {
@@ -1012,7 +1012,7 @@ public class AdapayService {
// 确认金额必须大于0保留两位小数点如0.10、100.05等。必须小于等于原支付金额-已确认金额-已撤销金额。
confirmParams.put("confirm_amt", AdapayUtil.formatAmount(confirmAmt));
// 参与分账的会员列表
List<String> collect = adapayMemberAccounts.stream().map(DivMember::getMember_id).collect(Collectors.toList());
List<String> collect = adapayMemberAccounts.stream().map(DivMember::getMemberId).collect(Collectors.toList());
// 附加说明
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderCode", orderCode);

View File

@@ -31,7 +31,7 @@ public class StartChargingCommand {
private String connectorCode;
/**
* 充电金额
* 充电金额(元)
*/
private BigDecimal chargeAmount;

View File

@@ -17,14 +17,15 @@ import io.netty.channel.ChannelHandlerContext;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Objects;
@Slf4j
@Service
public class EBikeSendCommandServiceImpl implements EBikeSendCommandService {
// 过载功率, 单位0.1W, 2450 * 0.1 = 2450W
private final int OVER_LOAD_POWER = 2450;
// 过载功率, 单位0.1W
private final int OVER_LOAD_POWER = 9000;
/**
* 电单车发送启动充电指令
@@ -47,8 +48,9 @@ public class EBikeSendCommandServiceImpl implements EBikeSendCommandService {
EBikeMessageCmd82.SpecificData data = new EBikeMessageCmd82.SpecificData();
// 充电模式
data.setRateMode(3);
// 余额或有效期
data.setBalanceOrValidity(1234);
// 余额(分)或有效期
int balance = command.getChargeAmount().multiply(new BigDecimal("100")).intValue();
data.setBalanceOrValidity(balance);
// 端口号
data.setPortNumber(Integer.parseInt(connectorCode));
// 充电命令

View File

@@ -3165,24 +3165,6 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
logger.info("订单:{}支付成功, 发送启动指令", dto.getOrderCode());
}
/**
* 异步发送预约充电指令
*/
// if (StringUtils.equals(orderInfo.getStartType(), StartTypeEnum.RESERVED.getValue())) {
// ReservationChargingCommand command = ReservationChargingCommand.builder()
// .transactionCode(orderInfo.getTransactionCode())
// .pileSn(orderInfo.getPileSn())
// .connectorCode(orderInfo.getConnectorCode())
// .operation(BytesUtil.bcd2Str(new byte[]{0x01}))
// .reservedStartTime(orderInfo.getReservedStartTime())
// .reservedEndTime(orderInfo.getReservedEndTime())
// .amount(new BigDecimal(Constants.FIVE_HUNDRED))
// .build();
// // 发送预约充电指令
// logger.info("订单:{}支付成功, 发送预约充电指令, command:{}", dto.getOrderCode(), JSON.toJSONString(command));
// pileRemoteService.reservationCharging(command);
// }
if (OrderStatusEnum.STAY_RETROACTIVE_AMOUNT.getValue().equals(orderInfo.getOrderStatus())) {
// 如果订单状态是待补缴,表示已经停止充电了,需要补缴费用,补缴完成订单状态改为订单完成,设置结算时间
orderInfo.setOrderStatus(OrderStatusEnum.ORDER_COMPLETE.getValue());