mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-05-18 00:38:33 +08:00
update
This commit is contained in:
@@ -114,7 +114,7 @@ public class OrderController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/settleOrderForWeb")
|
@PostMapping("/settleOrderForWeb")
|
||||||
public RestApiResponse<?> settleOrder(HttpServletRequest request, @RequestBody SettleOrderDTO dto) {
|
public RestApiResponse<?> settleOrder(HttpServletRequest request, @RequestBody SettleOrderDTO dto) {
|
||||||
logger.info("结算订单 param:{}", JSONObject.toJSONString(dto));
|
logger.info("结算订单param:{}", JSONObject.toJSONString(dto));
|
||||||
RestApiResponse<?> response;
|
RestApiResponse<?> response;
|
||||||
try {
|
try {
|
||||||
orderService.settleOrderForWeb(dto);
|
orderService.settleOrderForWeb(dto);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.jsowell.pile.service.programlogic;
|
package com.jsowell.pile.service.programlogic;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
@@ -23,6 +24,7 @@ import com.jsowell.pile.transaction.service.TransactionService;
|
|||||||
import com.jsowell.pile.vo.uniapp.MemberVO;
|
import com.jsowell.pile.vo.uniapp.MemberVO;
|
||||||
import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO;
|
import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO;
|
||||||
import com.jsowell.pile.vo.web.*;
|
import com.jsowell.pile.vo.web.*;
|
||||||
|
import com.jsowell.wxpay.dto.WechatSendMsgDTO;
|
||||||
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.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -105,6 +107,9 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
|||||||
@Autowired
|
@Autowired
|
||||||
protected MemberGroupService memberGroupService;
|
protected MemberGroupService memberGroupService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PileStationWhitelistService pileStationWhitelistService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
protected RedisCache redisCache;
|
protected RedisCache redisCache;
|
||||||
|
|
||||||
@@ -162,6 +167,116 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
|||||||
*/
|
*/
|
||||||
public abstract List<OrderDetailInfoVO.OrderRefundInfo> getOrderRefundInfoList(OrderBasicInfo orderBasicInfo);
|
public abstract List<OrderDetailInfoVO.OrderRefundInfo> getOrderRefundInfoList(OrderBasicInfo orderBasicInfo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成订单 返回交易流水号
|
||||||
|
*
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected Map<String, Object> generateOrderByCard(GenerateOrderDTO dto) throws Exception {
|
||||||
|
logger.info("充电桩主动申请启动充电生成订单 param:{}", JSON.toJSONString(dto));
|
||||||
|
BigDecimal accountBalance;
|
||||||
|
String payMode;
|
||||||
|
// 判断当前用户是否为平台测试员
|
||||||
|
PlatformTesterVO platformTesterVO = memberBasicInfoService.selectPlatformTesterStatus(dto.getMemberId());
|
||||||
|
PileBasicInfo pileBasicInfo = pileBasicInfoService.selectPileBasicInfoBySN(dto.getPileSn());
|
||||||
|
PileStationWhitelist pileStationWhitelist = pileStationWhitelistService.queryWhitelistByMemberId(String.valueOf(pileBasicInfo.getStationId()), dto.getMemberId());
|
||||||
|
|
||||||
|
// 运营商id
|
||||||
|
String merchantId = pileBasicInfo.getMerchantId() + "";
|
||||||
|
|
||||||
|
if (platformTesterVO != null && StringUtils.equals(Constants.ONE, platformTesterVO.getStatus())) {
|
||||||
|
// 是平台测试员
|
||||||
|
accountBalance = Constants.whitelistDefaultAmount;
|
||||||
|
payMode = OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue();
|
||||||
|
} else if (pileStationWhitelist != null) {
|
||||||
|
// 站点白名单
|
||||||
|
accountBalance = Constants.whitelistDefaultAmount;
|
||||||
|
payMode = OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue();
|
||||||
|
} else {
|
||||||
|
// 通过memberId获取账户余额
|
||||||
|
MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId(), merchantId);
|
||||||
|
if (memberVO == null) {
|
||||||
|
throw new BusinessException(ReturnCodeEnum.CODE_GET_MEMBER_ACCOUNT_AMOUNT_ERROR);
|
||||||
|
}
|
||||||
|
accountBalance = memberVO.getTotalAccountAmount();
|
||||||
|
if (accountBalance.compareTo(BigDecimal.ZERO) <= 0) {
|
||||||
|
logger.info("充电桩主动申请启动充电生成订单 余额不足, memberId:{}, MemberVO:{}", dto.getMemberId(), JSON.toJSONString(memberVO));
|
||||||
|
throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT);
|
||||||
|
}
|
||||||
|
BigDecimal defaultAmount = Constants.balancePayMaxAmount;
|
||||||
|
if (accountBalance.compareTo(defaultAmount) > 0) {
|
||||||
|
accountBalance = defaultAmount;
|
||||||
|
}
|
||||||
|
payMode = OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue();
|
||||||
|
// accountBalance = memberVO.getTotalAccountAmount();
|
||||||
|
// dto.setChargeAmount(totalAccountAmount); // 充电金额
|
||||||
|
// dto.setPayMode(OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue()); // 1-余额支付
|
||||||
|
}
|
||||||
|
dto.setChargeAmount(accountBalance);
|
||||||
|
dto.setPayMode(payMode);
|
||||||
|
/*
|
||||||
|
生成订单
|
||||||
|
*/
|
||||||
|
OrderBasicInfo basicInfo = generateOrder(dto);
|
||||||
|
if (basicInfo == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (StringUtils.equals(StartModeEnum.AUTH_CARD.getValue(), dto.getStartMode())) {
|
||||||
|
// 将卡状态改为启动锁定
|
||||||
|
PileAuthCard pileAuthCard = PileAuthCard.builder()
|
||||||
|
.id(dto.getPileAuthCardInfo().getId())
|
||||||
|
.logicCard(dto.getPileAuthCardInfo().getLogicCard())
|
||||||
|
.status("2")
|
||||||
|
.build();
|
||||||
|
pileAuthCardService.updatePileAuthCard(pileAuthCard);
|
||||||
|
} else if (StringUtils.equals(StartModeEnum.VIN_CODE.getValue(), dto.getStartMode())) {
|
||||||
|
// 将vin码改成启动锁定 2023.11.4 站点白名单和测试员不需要锁定
|
||||||
|
if (!StringUtils.equals(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue(), dto.getPayMode())) {
|
||||||
|
dto.getMemberPlateNumberRelation().setVinStatus("2");
|
||||||
|
}
|
||||||
|
// 2024.02.06 不再判断锁定状态
|
||||||
|
// memberPlateNumberRelationService.updateMemberPlateNumberRelation(dto.getMemberPlateNumberRelation());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 组装结果集
|
||||||
|
Map<String, Object> map = Maps.newHashMap();
|
||||||
|
map.put("orderCode", basicInfo.getOrderCode());
|
||||||
|
map.put("transactionCode", basicInfo.getTransactionCode());
|
||||||
|
map.put("accountBalance", accountBalance);
|
||||||
|
|
||||||
|
logger.info("生成订单 result:{}", JSON.toJSONString(map));
|
||||||
|
|
||||||
|
// 支付订单
|
||||||
|
PayOrderDTO payOrderDTO = new PayOrderDTO();
|
||||||
|
payOrderDTO.setOrderCode(basicInfo.getOrderCode());
|
||||||
|
payOrderDTO.setPayAmount(accountBalance);
|
||||||
|
payOrderDTO.setPayMode(dto.getPayMode());
|
||||||
|
payOrderDTO.setMemberId(dto.getMemberId());
|
||||||
|
payOrderDTO.setStartMode(dto.getStartMode());
|
||||||
|
// payOrderDTO.setCode();
|
||||||
|
// payOrderDTO.setLockValue();
|
||||||
|
// payOrderDTO.setOrderBasicInfo(basicInfo);
|
||||||
|
|
||||||
|
// payOrder(payOrderDTO);
|
||||||
|
|
||||||
|
String mode = pileMerchantInfoService.getDelayModeByMerchantId(merchantId);
|
||||||
|
// 获取处理逻辑
|
||||||
|
AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode);
|
||||||
|
orderLogic.payOrder(payOrderDTO);
|
||||||
|
|
||||||
|
// 推送小程序启动充电消息
|
||||||
|
// 通过memberId查询openId
|
||||||
|
MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMemberId(dto.getMemberId());
|
||||||
|
WechatSendMsgDTO sendMsgDTO = new WechatSendMsgDTO();
|
||||||
|
sendMsgDTO.setOpenId(memberBasicInfo.getOpenId());
|
||||||
|
sendMsgDTO.setOrderCode(basicInfo.getOrderCode());
|
||||||
|
|
||||||
|
wxAppletRemoteService.startChargingSendMsg(sendMsgDTO);
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单支付成功 支付回调
|
* 订单支付成功 支付回调
|
||||||
* 支付成功后掉用这个方法
|
* 支付成功后掉用这个方法
|
||||||
@@ -525,7 +640,7 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 从redis中取出实时记录保存到表中j
|
* 从redis中取出实时记录保存到表中
|
||||||
* 当订单完成的时候调用
|
* 当订单完成的时候调用
|
||||||
* 【公共方法】
|
* 【公共方法】
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user