This commit is contained in:
2024-01-22 12:32:22 +08:00
parent 925531cf2c
commit bba7c16e35
7 changed files with 173 additions and 175 deletions

View File

@@ -21,10 +21,8 @@ import com.jsowell.common.core.redis.RedisCache;
import com.jsowell.common.enums.TitleTypeEnum; import com.jsowell.common.enums.TitleTypeEnum;
import com.jsowell.common.enums.adapay.MerchantDelayModeEnum; import com.jsowell.common.enums.adapay.MerchantDelayModeEnum;
import com.jsowell.common.enums.uniapp.BalanceChangesEnum; import com.jsowell.common.enums.uniapp.BalanceChangesEnum;
import com.jsowell.common.enums.ykc.OrderStatusEnum;
import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum;
import com.jsowell.common.enums.ykc.ScenarioEnum; import com.jsowell.common.enums.ykc.ScenarioEnum;
import com.jsowell.common.enums.ykc.StartModeEnum;
import com.jsowell.common.exception.BusinessException; import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.AdapayUtil; import com.jsowell.common.util.AdapayUtil;
import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.DateUtils;
@@ -38,7 +36,10 @@ import com.jsowell.pile.service.*;
import com.jsowell.pile.transaction.dto.MemberTransactionDTO; import com.jsowell.pile.transaction.dto.MemberTransactionDTO;
import com.jsowell.pile.transaction.service.TransactionService; import com.jsowell.pile.transaction.service.TransactionService;
import com.jsowell.pile.vo.base.MemberWalletVO; import com.jsowell.pile.vo.base.MemberWalletVO;
import com.jsowell.pile.vo.uniapp.*; import com.jsowell.pile.vo.uniapp.InvoiceTitleVO;
import com.jsowell.pile.vo.uniapp.MemberVO;
import com.jsowell.pile.vo.uniapp.MemberWalletInfoVO;
import com.jsowell.pile.vo.uniapp.MemberWalletLogVO;
import com.jsowell.wxpay.service.WxAppletRemoteService; import com.jsowell.wxpay.service.WxAppletRemoteService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.compress.utils.Lists; import org.apache.commons.compress.utils.Lists;
@@ -659,43 +660,43 @@ public class MemberService {
* @param dto * @param dto
* @throws ParseException * @throws ParseException
*/ */
public void rechargeOrderAmount(RechargeOrderAmountDTO dto) throws ParseException { // public void rechargeOrderAmount(RechargeOrderAmountDTO dto) throws ParseException {
// 根据memberId查询出当前用户正在充电的 vin启动订单 或 卡启动订单 // // 根据memberId查询出当前用户正在充电的 vin启动订单 或 卡启动订单
UniAppQueryOrderDTO orderDTO = new UniAppQueryOrderDTO(); // UniAppQueryOrderDTO orderDTO = new UniAppQueryOrderDTO();
orderDTO.setOrderStatus("4"); // 4-正在充电中 // orderDTO.setOrderStatus("4"); // 4-正在充电中
PageResponse pageResponse = orderService.getListByMemberIdAndOrderStatus(dto.getMemberId(), orderDTO); // PageResponse pageResponse = orderService.getListByMemberIdAndOrderStatus(dto.getMemberId(), orderDTO);
if (pageResponse == null) { // if (pageResponse == null) {
return; // return;
} // }
List<OrderVO> list = (List<OrderVO>) pageResponse.getList(); // List<OrderVO> list = (List<OrderVO>) pageResponse.getList();
List<OrderVO> chargingList = list.stream() // List<OrderVO> chargingList = list.stream()
.filter(orderVO -> orderVO.getOrderStatus().equals(OrderStatusEnum.IN_THE_CHARGING.getValue())) // .filter(orderVO -> orderVO.getOrderStatus().equals(OrderStatusEnum.IN_THE_CHARGING.getValue()))
.collect(Collectors.toList()); // .collect(Collectors.toList());
for (OrderVO orderVO : chargingList) { // for (OrderVO orderVO : chargingList) {
if (StringUtils.equals(orderVO.getStartMode(), StartModeEnum.AUTH_CARD.getValue()) // if (StringUtils.equals(orderVO.getStartMode(), StartModeEnum.AUTH_CARD.getValue())
|| StringUtils.equals(orderVO.getStartMode(), StartModeEnum.OFFLINE_CARD.getValue()) // || StringUtils.equals(orderVO.getStartMode(), StartModeEnum.OFFLINE_CARD.getValue())
|| StringUtils.equals(orderVO.getStartMode(), StartModeEnum.VIN_CODE.getValue())) { // || StringUtils.equals(orderVO.getStartMode(), StartModeEnum.VIN_CODE.getValue())) {
// 将充值后的余额计算出来 // // 将充值后的余额计算出来
BigDecimal rechargeAmount = new BigDecimal(dto.getRechargeAmount()); // BigDecimal rechargeAmount = new BigDecimal(dto.getRechargeAmount());
BigDecimal payAmount = orderVO.getPayAmount().add(rechargeAmount); // BigDecimal payAmount = orderVO.getPayAmount().add(rechargeAmount);
orderVO.setPayAmount(payAmount); // orderVO.setPayAmount(payAmount);
// 发送0x41指令更新账户余额 // // 发送0x41指令更新账户余额
RemoteAccountBalanceUpdateDTO remoteDTO = new RemoteAccountBalanceUpdateDTO(); // RemoteAccountBalanceUpdateDTO remoteDTO = new RemoteAccountBalanceUpdateDTO();
remoteDTO.setPileSn(orderVO.getPileSn()); // remoteDTO.setPileSn(orderVO.getPileSn());
remoteDTO.setConnectorCode(orderVO.getConnectorCode()); // remoteDTO.setConnectorCode(orderVO.getConnectorCode());
remoteDTO.setAccountBalance(String.valueOf(orderVO.getPayAmount())); // remoteDTO.setAccountBalance(String.valueOf(orderVO.getPayAmount()));
//
pileRemoteService.remoteAccountBalanceUpdate(remoteDTO); // pileRemoteService.remoteAccountBalanceUpdate(remoteDTO);
//
// 将支付金额修改数据库 // // 将支付金额修改数据库
OrderBasicInfo basicInfo = new OrderBasicInfo(); // OrderBasicInfo basicInfo = new OrderBasicInfo();
basicInfo.setId(Integer.parseInt(orderVO.getId())); // basicInfo.setId(Integer.parseInt(orderVO.getId()));
basicInfo.setPayAmount(payAmount); // basicInfo.setPayAmount(payAmount);
//
orderBasicInfoService.updateOrderBasicInfo(basicInfo); // orderBasicInfoService.updateOrderBasicInfo(basicInfo);
} // }
} // }
} // }
public List<MemberWalletVO> queryMemberWalletList(String memberId) { public List<MemberWalletVO> queryMemberWalletList(String memberId) {
return memberWalletInfoService.selectByMemberWalletList(memberId); return memberWalletInfoService.selectByMemberWalletList(memberId);

View File

@@ -2012,9 +2012,8 @@ public class SpringBootTestController {
// payOrderDTO.setLockValue(); // payOrderDTO.setLockValue();
// payOrderDTO.setOrderBasicInfo(basicInfo); // payOrderDTO.setOrderBasicInfo(basicInfo);
Map<String, Object> map = orderBasicInfoService.payOrder(payOrderDTO); // Map<String, Object> map = orderBasicInfoService.payOrder(payOrderDTO);
// System.out.println(map);
System.out.println(map);
} }
@Test @Test

View File

@@ -331,7 +331,7 @@ public interface OrderBasicInfoService{
void analysisPileParameter(BasicPileDTO dto); void analysisPileParameter(BasicPileDTO dto);
Map<String, Object> payOrder(PayOrderDTO dto) throws Exception; // Map<String, Object> payOrder(PayOrderDTO dto) throws Exception;
/** /**
* 订单支付成功 支付回调 * 订单支付成功 支付回调

View File

@@ -2993,37 +2993,37 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
* @param dto * @param dto
* @return * @return
*/ */
@Override // @Override
public Map<String, Object> payOrder(PayOrderDTO dto) { // public Map<String, Object> payOrder(PayOrderDTO dto) {
OrderBasicInfo orderInfo = this.getOrderInfoByOrderCode(dto.getOrderCode()); // OrderBasicInfo orderInfo = this.getOrderInfoByOrderCode(dto.getOrderCode());
if (orderInfo == null) { // if (orderInfo == null) {
throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_INFO_IS_NULL); // throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_INFO_IS_NULL);
} // }
if (!StringUtils.equals(orderInfo.getPayStatus(), OrderPayStatusEnum.unpaid.getValue())) { // if (!StringUtils.equals(orderInfo.getPayStatus(), OrderPayStatusEnum.unpaid.getValue())) {
// 订单已支付 // // 订单已支付
throw new BusinessException(ReturnCodeEnum.CODE_ORDER_IS_NOT_TO_BE_PAID_ERROR); // throw new BusinessException(ReturnCodeEnum.CODE_ORDER_IS_NOT_TO_BE_PAID_ERROR);
} // }
Map<String, Object> resultMap = Maps.newHashMap(); // Map<String, Object> resultMap = Maps.newHashMap();
if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) { // if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) {
// 余额支付 // // 余额支付
// balancePayOrder(dto); // // balancePayOrder(dto);
balancePayOrderV2(dto); // balancePayOrderV2(dto);
} else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())) { // } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())) {
// 2023-07-11 全部改为汇付支付 // // 2023-07-11 全部改为汇付支付
dto.setGoodsTitle("充电费用"); // dto.setGoodsTitle("充电费用");
dto.setGoodsDesc("充电桩预付款金额"); // dto.setGoodsDesc("充电桩预付款金额");
dto.setType(ScenarioEnum.ORDER.getValue()); // dto.setType(ScenarioEnum.ORDER.getValue());
Map<String, Object> weixinMap = adapayService.createPayment(dto); // Map<String, Object> weixinMap = adapayService.createPayment(dto);
//
// 返回微信支付参数 // // 返回微信支付参数
resultMap.put("weixinMap", weixinMap); // resultMap.put("weixinMap", weixinMap);
} else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) { // 白名单支付 // } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) { // 白名单支付
// 白名单支付可以直接调支付回调方法 // // 白名单支付可以直接调支付回调方法
dto.setPayAmount(Constants.whitelistDefaultAmount); // dto.setPayAmount(Constants.whitelistDefaultAmount);
whiteListPayOrder(dto); // whiteListPayOrder(dto);
} // }
return resultMap; // return resultMap;
} // }
/** /**
* 白名单支付订单逻辑 * 白名单支付订单逻辑

View File

@@ -12,7 +12,6 @@ import com.jsowell.adapay.common.CreateAdaPaymentParam;
import com.jsowell.adapay.config.AbstractAdapayConfig; import com.jsowell.adapay.config.AbstractAdapayConfig;
import com.jsowell.adapay.factory.AdapayConfigFactory; import com.jsowell.adapay.factory.AdapayConfigFactory;
import com.jsowell.adapay.response.PaymentReverseResponse; import com.jsowell.adapay.response.PaymentReverseResponse;
import com.jsowell.adapay.vo.PaymentInfo;
import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.CacheConstants;
import com.jsowell.common.constant.Constants; import com.jsowell.common.constant.Constants;
import com.jsowell.common.core.domain.ykc.TransactionRecordsData; import com.jsowell.common.core.domain.ykc.TransactionRecordsData;
@@ -119,98 +118,98 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
* 余额支付订单 * 余额支付订单
* 使用的是通过汇付充值的余额 * 使用的是通过汇付充值的余额
*/ */
@Transactional(rollbackFor = Exception.class) // @Transactional(rollbackFor = Exception.class)
public void balancePayOrder(PayOrderDTO dto) { // public void balancePayOrder(PayOrderDTO dto) {
logger.info("【{}】-余额支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); // logger.info("【{}】-余额支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto));
// 订单编号 // // 订单编号
String orderCode = dto.getOrderCode(); // String orderCode = dto.getOrderCode();
// 支付金额 // // 支付金额
BigDecimal chargeAmount = dto.getPayAmount(); // BigDecimal chargeAmount = dto.getPayAmount();
// 查询该会员的余额 // // 查询该会员的余额
MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId()); // MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId());
BigDecimal totalAccountAmount = memberVO.getPrincipalBalance(); // BigDecimal totalAccountAmount = memberVO.getPrincipalBalance();
//
if (totalAccountAmount.compareTo(chargeAmount) < 0) { // if (totalAccountAmount.compareTo(chargeAmount) < 0) {
// 总余额小于充电金额 // // 总余额小于充电金额
throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT); // throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT);
} // }
BigDecimal principalPay = chargeAmount; // BigDecimal principalPay = chargeAmount;
//
// 更新会员钱包 // // 更新会员钱包
UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder() // UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder()
.memberId(dto.getMemberId()) // .memberId(dto.getMemberId())
.type(MemberWalletEnum.TYPE_OUT.getValue()) // .type(MemberWalletEnum.TYPE_OUT.getValue())
.subType(MemberWalletEnum.SUBTYPE_PAYMENT_FOR_ORDER.getValue()) // .subType(MemberWalletEnum.SUBTYPE_PAYMENT_FOR_ORDER.getValue())
.updatePrincipalBalance(principalPay) // 使用本金支付的金额 // .updatePrincipalBalance(principalPay) // 使用本金支付的金额
.relatedOrderCode(orderCode) // .relatedOrderCode(orderCode)
.build(); // .build();
memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO); // memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO);
//
// 查询余额充值有剩余的记录 // // 查询余额充值有剩余的记录
List<BalanceDeductionAmountVO> list = calculateTheBalanceDeductionAmount(dto.getMemberId(), chargeAmount); // List<BalanceDeductionAmountVO> list = calculateTheBalanceDeductionAmount(dto.getMemberId(), chargeAmount);
//
// 记录订单支付流水 // // 记录订单支付流水
BigDecimal payAmt = BigDecimal.ZERO; // BigDecimal payAmt = BigDecimal.ZERO;
List<PaymentInfo> paymentInfos = Lists.newArrayList(); // List<PaymentInfo> paymentInfos = Lists.newArrayList();
for (BalanceDeductionAmountVO balanceDeductionAmountVO : list) { // for (BalanceDeductionAmountVO balanceDeductionAmountVO : list) {
String paymentId = balanceDeductionAmountVO.getPaymentId(); // String paymentId = balanceDeductionAmountVO.getPaymentId();
// 此交易单扣除金额 // // 此交易单扣除金额
BigDecimal deductionAmount = balanceDeductionAmountVO.getDeductionAmount(); // BigDecimal deductionAmount = balanceDeductionAmountVO.getDeductionAmount();
payAmt = payAmt.add(deductionAmount); // payAmt = payAmt.add(deductionAmount);
//
PaymentInfo paymentInfo = new PaymentInfo(); // PaymentInfo paymentInfo = new PaymentInfo();
paymentInfo.setPaymentId(paymentId); // paymentInfo.setPaymentId(paymentId);
paymentInfo.setAmount(deductionAmount.toString()); // paymentInfo.setAmount(deductionAmount.toString());
paymentInfos.add(paymentInfo); // paymentInfos.add(paymentInfo);
} // }
OrderPayRecord build = OrderPayRecord.builder() // OrderPayRecord build = OrderPayRecord.builder()
.orderCode(orderCode) // .orderCode(orderCode)
.payMode(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue()) // .payMode(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue())
.payAmount(payAmt) // .payAmount(payAmt)
.acquirer(AcquirerEnum.LOCAL.getValue()) // .acquirer(AcquirerEnum.LOCAL.getValue())
.deductionRecord(JSON.toJSONString(paymentInfos)) // .deductionRecord(JSON.toJSONString(paymentInfos))
.createBy(dto.getMemberId()) // .createBy(dto.getMemberId())
.delFlag(DelFlagEnum.NORMAL.getValue()) // .delFlag(DelFlagEnum.NORMAL.getValue())
.build(); // .build();
//
// 记录支订单付流水 // // 记录支订单付流水
List<OrderPayRecord> payRecordList = Lists.newArrayList(build); // List<OrderPayRecord> payRecordList = Lists.newArrayList(build);
orderPayRecordService.batchInsert(payRecordList); // orderPayRecordService.batchInsert(payRecordList);
//
// 把消费金额冻结 // // 把消费金额冻结
for (OrderPayRecord record : payRecordList) { // for (OrderPayRecord record : payRecordList) {
List<PaymentInfo> paymentInfoList = orderPayRecordService.parseDeductionRecord(record.getDeductionRecord()); // List<PaymentInfo> paymentInfoList = orderPayRecordService.parseDeductionRecord(record.getDeductionRecord());
// 循环冻结金额 // // 循环冻结金额
for (PaymentInfo paymentInfo : paymentInfoList) { // for (PaymentInfo paymentInfo : paymentInfoList) {
String paymentId = paymentInfo.getPaymentId(); // String paymentId = paymentInfo.getPaymentId();
BigDecimal amount = new BigDecimal(paymentInfo.getAmount()); // BigDecimal amount = new BigDecimal(paymentInfo.getAmount());
// 余额支付 临时冻结金额 // // 余额支付 临时冻结金额
memberAdapayRecordService.updateFreezeAmount(paymentId, amount); // memberAdapayRecordService.updateFreezeAmount(paymentId, amount);
} // }
} // }
//
// 余额支付可以直接调支付回调方法 // // 余额支付可以直接调支付回调方法
PayOrderSuccessCallbackDTO callbackDTO = PayOrderSuccessCallbackDTO.builder() // PayOrderSuccessCallbackDTO callbackDTO = PayOrderSuccessCallbackDTO.builder()
.orderCode(orderCode) // .orderCode(orderCode)
.payAmount(chargeAmount) // .payAmount(chargeAmount)
.payMode(dto.getPayMode()) // .payMode(dto.getPayMode())
.startMode(dto.getStartMode()) // .startMode(dto.getStartMode())
.acquirer(AcquirerEnum.LOCAL.getValue()) // .acquirer(AcquirerEnum.LOCAL.getValue())
.build(); // .build();
payOrderSuccessCallback(callbackDTO); // payOrderSuccessCallback(callbackDTO);
//
// 余额支付订单 记录会员交易流水 // // 余额支付订单 记录会员交易流水
MemberTransactionRecord record = MemberTransactionRecord.builder() // MemberTransactionRecord record = MemberTransactionRecord.builder()
.orderCode(orderCode) // .orderCode(orderCode)
.scenarioType(ScenarioEnum.ORDER.getValue()) // .scenarioType(ScenarioEnum.ORDER.getValue())
.memberId(memberVO.getMemberId()) // .memberId(memberVO.getMemberId())
.actionType(ActionTypeEnum.FORWARD.getValue()) // .actionType(ActionTypeEnum.FORWARD.getValue())
.payMode(PayModeEnum.PAYMENT_OF_BALANCE.getValue()) // .payMode(PayModeEnum.PAYMENT_OF_BALANCE.getValue())
.paymentInstitutions(PaymentInstitutionsEnum.LOCAL_ACCOUNTS.getValue()) // .paymentInstitutions(PaymentInstitutionsEnum.LOCAL_ACCOUNTS.getValue())
.amount(dto.getPayAmount()) // 单位元 // .amount(dto.getPayAmount()) // 单位元
.build(); // .build();
memberTransactionRecordService.insertSelective(record); // memberTransactionRecordService.insertSelective(record);
} // }
/** /**
* 万车充小程序-余额支付订单逻辑 * 万车充小程序-余额支付订单逻辑

View File

@@ -10,7 +10,6 @@ import com.jsowell.pile.dto.QueryStationInfoDTO;
import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO;
import com.jsowell.pile.vo.uniapp.BillingPriceVO; import com.jsowell.pile.vo.uniapp.BillingPriceVO;
import com.jsowell.thirdparty.hainan.domain.HNStationInfo; import com.jsowell.thirdparty.hainan.domain.HNStationInfo;
import com.jsowell.thirdparty.lianlian.dto.CommonParamsDTO;
import com.jsowell.thirdparty.platform.AbsInterfaceWithPlatformService; import com.jsowell.thirdparty.platform.AbsInterfaceWithPlatformService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -154,9 +153,9 @@ public class HaiNanChargeService extends AbsInterfaceWithPlatformService {
* *
* @param dto * @param dto
*/ */
@Override // @Override
public Map<String, String> generateToken(CommonParamsDTO dto) { // public Map<String, String> generateToken(CommonParamsDTO dto) {
return null; // return null;
} // }
} }

View File

@@ -92,7 +92,7 @@ public abstract class AbsInterfaceWithPlatformService {
// 对比解出来的密钥是否和数据库中保存的一致 // 对比解出来的密钥是否和数据库中保存的一致
if (!StringUtils.equals(operatorSecret, secret)) { if (!StringUtils.equals(operatorSecret, secret)) {
System.out.println("密钥不一致"); // System.out.println("密钥不一致");
return null; return null;
} }
System.out.println("密钥校验通过!! 密钥为: " + operatorSecret); System.out.println("密钥校验通过!! 密钥为: " + operatorSecret);
@@ -100,7 +100,7 @@ public abstract class AbsInterfaceWithPlatformService {
// 生成token返回 eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI0MjUwMTA3NjUiLCJpYXQiOjE2ODUwOTcxMTYsInN1YiI6IjEyMzEyMzEyMzEyM2FhYWEiLCJleHAiOjY4NjkwOTcxMTZ9.NyxOUIZmgsqtfex7oiMRR2LaWePTA56WHVMXIkWWt2w // 生成token返回 eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI0MjUwMTA3NjUiLCJpYXQiOjE2ODUwOTcxMTYsInN1YiI6IjEyMzEyMzEyMzEyM2FhYWEiLCJleHAiOjY4NjkwOTcxMTZ9.NyxOUIZmgsqtfex7oiMRR2LaWePTA56WHVMXIkWWt2w
long ttlMillis = 60 * 60 * 24 * 1000; long ttlMillis = 60 * 60 * 24 * 1000;
String token = JWTUtils.createToken(operatorID, operatorSecret, ttlMillis); String token = JWTUtils.createToken(operatorID, operatorSecret, ttlMillis);
System.out.println("生成的token" + token); // System.out.println("生成的token" + token);
// 组装返回参数 // 组装返回参数
AccessTokenVO vo = new AccessTokenVO(); AccessTokenVO vo = new AccessTokenVO();