mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-05-07 19:40:07 +08:00
Merge branch 'dev' of http://192.168.2.2:8099/jsowell/jsowell-charger-web into dev
# Conflicts: # jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPileOccupyServiceImpl.java
This commit is contained in:
@@ -129,10 +129,10 @@ public class PayController extends BaseController {
|
||||
}
|
||||
response = new RestApiResponse<>(map);
|
||||
} catch (BusinessException e) {
|
||||
logger.warn("wechatpay支付订单 warn param:{}", dto.toString(), e);
|
||||
logger.warn("wechatpay支付订单 warn param:{}", dto, e);
|
||||
response = new RestApiResponse<>(e.getCode(), e.getMessage());
|
||||
} catch (Exception e) {
|
||||
logger.error("wechatpay支付订单 error param:{}", dto.toString(), e);
|
||||
logger.error("wechatpay支付订单 error param:{}", dto, e);
|
||||
response = new RestApiResponse<>(ReturnCodeEnum.CODE_ORDER_PAY_ERROR);
|
||||
} finally {
|
||||
// 支付订单解锁
|
||||
@@ -328,15 +328,16 @@ public class PayController extends BaseController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付占桩订单
|
||||
* 支付占桩订单/占桩订单支付
|
||||
* https://api.jsowellcloud.com/uniapp/pay/payOccupyPileOrder
|
||||
*/
|
||||
@PostMapping("/payOccupyPileOrder")
|
||||
public RestApiResponse<?> payOccupyPileOrder(HttpServletRequest request, @RequestBody PayOrderDTO dto) {
|
||||
logger.info("wechatpay支付订单 param:{}", dto.toString());
|
||||
logger.info("支付占桩订单 param:{}", dto.toString());
|
||||
RestApiResponse<?> response;
|
||||
|
||||
// 支付订单加锁
|
||||
String lockKey = "pay_order_" + dto.getOrderCode();
|
||||
String lockKey = "pay_occupy_order_" + dto.getOrderCode();
|
||||
String lockValue = IdUtils.fastUUID();
|
||||
try {
|
||||
String memberId = getMemberIdByAuthorization(request);
|
||||
@@ -354,7 +355,7 @@ public class PayController extends BaseController {
|
||||
if (isLock) {
|
||||
String appId = request.getHeader("appId");
|
||||
dto.setWechatAppId(appId);
|
||||
map = orderService.payOrder(dto);
|
||||
map = orderService.payOccupyPileOrder(dto);
|
||||
}
|
||||
response = new RestApiResponse<>(map);
|
||||
} catch (BusinessException e) {
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.jsowell.api.uniapp;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.jsowell.adapay.dto.BalancePaymentRequestDTO;
|
||||
import com.jsowell.adapay.service.AdapayMemberService;
|
||||
import com.jsowell.adapay.service.AdapayService;
|
||||
import com.jsowell.common.annotation.Anonymous;
|
||||
import com.jsowell.common.core.controller.BaseController;
|
||||
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
|
||||
@@ -48,7 +48,7 @@ public class TempController extends BaseController {
|
||||
private IAdapayMemberAccountService adapayMemberAccountService;
|
||||
|
||||
@Autowired
|
||||
private AdapayMemberService adapayMemberService;
|
||||
private AdapayService adapayMemberService;
|
||||
|
||||
@Autowired
|
||||
private IMemberBasicInfoService memberBasicInfoService;
|
||||
|
||||
@@ -46,6 +46,7 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.math.BigDecimal;
|
||||
import java.text.ParseException;
|
||||
@@ -111,9 +112,11 @@ public class OrderService {
|
||||
@Autowired
|
||||
private MemberAdapayRecordService memberAdapayRecordService;
|
||||
|
||||
@Resource
|
||||
private OrderPileOccupyService orderPileOccupyService;
|
||||
|
||||
/**
|
||||
* 生成订单
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
@@ -125,18 +128,8 @@ public class OrderService {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取到vin 查询对应的用户,得到余额
|
||||
*
|
||||
* 生成订单
|
||||
*
|
||||
* 支付订单
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* 订单支付
|
||||
*
|
||||
* @param dto
|
||||
*/
|
||||
public Map<String, Object> payOrder(PayOrderDTO dto) throws Exception {
|
||||
@@ -154,7 +147,7 @@ public class OrderService {
|
||||
// 查询订单详情,验证订单中的桩编号是否正确
|
||||
OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(dto.getOrderCode());
|
||||
if (orderBasicInfo == null) {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_NULL_ERROR);
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_INFO_IS_NULL);
|
||||
}
|
||||
if (!(StringUtils.equals(orderBasicInfo.getPileSn(), dto.getPileSn())
|
||||
&& StringUtils.equals(orderBasicInfo.getConnectorCode(), dto.getConnectorCode()))) {
|
||||
@@ -241,7 +234,7 @@ public class OrderService {
|
||||
// 查订单
|
||||
OrderBasicInfo orderInfo = orderBasicInfoService.getOrderInfoByOrderCode(dto.getOrderCode());
|
||||
if (orderInfo == null) {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_NULL_ERROR);
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_INFO_IS_NULL);
|
||||
}
|
||||
// 判断订单状态是不是已经结算了
|
||||
if (StringUtils.equals(orderInfo.getOrderStatus(), OrderStatusEnum.ORDER_COMPLETE.getValue())) {
|
||||
@@ -540,7 +533,7 @@ public class OrderService {
|
||||
public UniAppOrderVO getUniAppOrderDetail(String orderCode) {
|
||||
OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode);
|
||||
if (orderBasicInfo == null) {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_NULL_ERROR);
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_INFO_IS_NULL);
|
||||
}
|
||||
UniAppOrderVO vo = new UniAppOrderVO();
|
||||
vo.setOrderCode(orderBasicInfo.getOrderCode());
|
||||
@@ -1148,5 +1141,7 @@ public class OrderService {
|
||||
log.info("支付撤销失败 data:{}", JSON.toJSONString(data));
|
||||
}
|
||||
|
||||
|
||||
public Map<String, Object> payOccupyPileOrder(PayOrderDTO dto) {
|
||||
return orderPileOccupyService.payOccupyPileOrder(dto);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.jsowell.adapay.dto.AdapayMemberInfoDTO;
|
||||
import com.jsowell.adapay.dto.SettleAccountDTO;
|
||||
import com.jsowell.adapay.dto.UpdateAccountConfigDTO;
|
||||
import com.jsowell.adapay.dto.WithdrawDTO;
|
||||
import com.jsowell.adapay.service.AdapayMemberService;
|
||||
import com.jsowell.adapay.service.AdapayService;
|
||||
import com.jsowell.adapay.vo.AdapayAccountBalanceVO;
|
||||
import com.jsowell.common.core.controller.BaseController;
|
||||
import com.jsowell.common.core.domain.AjaxResult;
|
||||
@@ -26,7 +26,7 @@ import java.util.Map;
|
||||
public class AdapayMemberController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private AdapayMemberService adapayMemberService;
|
||||
private AdapayService adapayMemberService;
|
||||
|
||||
/**
|
||||
* 创建结算账户
|
||||
|
||||
@@ -15,7 +15,7 @@ import com.huifu.adapay.model.Refund;
|
||||
import com.jsowell.JsowellApplication;
|
||||
import com.jsowell.adapay.config.AbstractAdapayConfig;
|
||||
import com.jsowell.adapay.factory.AdapayConfigFactory;
|
||||
import com.jsowell.adapay.service.AdapayMemberService;
|
||||
import com.jsowell.adapay.service.AdapayService;
|
||||
import com.jsowell.common.constant.CacheConstants;
|
||||
import com.jsowell.common.constant.Constants;
|
||||
import com.jsowell.common.core.domain.entity.SysDictData;
|
||||
@@ -175,7 +175,7 @@ public class SpringBootTestController {
|
||||
private IAdapayRefundRecordService adapayRefundRecordService;
|
||||
|
||||
@Autowired
|
||||
private AdapayMemberService adapayMemberService;
|
||||
private AdapayService adapayMemberService;
|
||||
|
||||
@Autowired
|
||||
private AMapService aMapService;
|
||||
@@ -371,7 +371,7 @@ public class SpringBootTestController {
|
||||
payOrderDTO.setMemberId(dto.getMemberId());
|
||||
// payOrderDTO.setCode();
|
||||
// payOrderDTO.setLockValue();
|
||||
payOrderDTO.setOrderBasicInfo(basicInfo);
|
||||
// payOrderDTO.setOrderBasicInfo(basicInfo);
|
||||
|
||||
Map<String, Object> map = orderBasicInfoService.payOrder(payOrderDTO);
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ package com.jsowell.common.enums.uniapp;
|
||||
*/
|
||||
public enum OrderPileOccupyPayStatusEnum {
|
||||
UN_PAY("0", "未支付"),
|
||||
PAYMENT_COMPLETION("1", "未支付"),
|
||||
PAYMENT_COMPLETION("1", "支付完成"),
|
||||
NO_PAYMENT_REQUIRED("2", "无需支付"),
|
||||
;
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ public enum ReturnCodeEnum {
|
||||
|
||||
CODE_ORDER_INFO_ERROR("00100019", "订单信息有误"),
|
||||
|
||||
CODE_QUERY_ORDER_NULL_ERROR("00100020", "查询订单为空"),
|
||||
CODE_QUERY_ORDER_INFO_IS_NULL("00100020", "未查到相关订单信息"),
|
||||
|
||||
CODE_ORDER_PILE_MAPPING_ERROR("00100021", "订单与当前桩不匹配"),
|
||||
|
||||
@@ -148,8 +148,6 @@ public enum ReturnCodeEnum {
|
||||
|
||||
CODE_USER_UNBIND_CARNO_ERROR("00500003", "用户解绑车牌号异常"),
|
||||
|
||||
CODE_QUERY_ORDER_INFO_IS_NULL("00400011", "未查到相关订单信息!"),
|
||||
|
||||
CODE_PILE_NOT_INFO("00400012", "未查到该该桩的信息,请检查!"),
|
||||
|
||||
CODE_SECRET_KEY_ERROR("00400013", "填写的桩密钥有误,请检查!"),
|
||||
|
||||
@@ -2,10 +2,13 @@ package com.jsowell.adapay.service;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.alibaba.fastjson2.TypeReference;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
||||
import com.huifu.adapay.model.*;
|
||||
import com.jsowell.adapay.common.CreateAdaPaymentParam;
|
||||
import com.jsowell.adapay.common.DivMember;
|
||||
import com.jsowell.adapay.config.AbstractAdapayConfig;
|
||||
import com.jsowell.adapay.dto.SettleAccountDTO;
|
||||
@@ -17,10 +20,13 @@ import com.jsowell.adapay.vo.AdapayAccountBalanceVO;
|
||||
import com.jsowell.adapay.vo.AdapayCorpMemberVO;
|
||||
import com.jsowell.adapay.vo.AdapayMemberInfoVO;
|
||||
import com.jsowell.adapay.vo.AdapaySettleAccountVO;
|
||||
import com.jsowell.common.constant.CacheConstants;
|
||||
import com.jsowell.common.constant.Constants;
|
||||
import com.jsowell.common.core.redis.RedisCache;
|
||||
import com.jsowell.common.enums.DelFlagEnum;
|
||||
import com.jsowell.common.enums.adapay.AdapayStatusEnum;
|
||||
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
|
||||
import com.jsowell.common.enums.ykc.ScenarioEnum;
|
||||
import com.jsowell.common.exception.BusinessException;
|
||||
import com.jsowell.common.util.AdapayUtil;
|
||||
import com.jsowell.common.util.StringUtils;
|
||||
@@ -29,14 +35,17 @@ import com.jsowell.common.util.id.IdUtils;
|
||||
import com.jsowell.pile.domain.AdapayMemberAccount;
|
||||
import com.jsowell.pile.domain.ClearingBillInfo;
|
||||
import com.jsowell.pile.domain.ClearingWithdrawInfo;
|
||||
import com.jsowell.pile.dto.PayOrderDTO;
|
||||
import com.jsowell.pile.service.ClearingBillInfoService;
|
||||
import com.jsowell.pile.service.ClearingWithdrawInfoService;
|
||||
import com.jsowell.pile.service.IAdapayMemberAccountService;
|
||||
import com.jsowell.pile.service.IPileMerchantInfoService;
|
||||
import com.jsowell.wxpay.service.WxAppletRemoteService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.cglib.beans.BeanMap;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -46,11 +55,15 @@ import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class AdapayMemberService {
|
||||
public class AdapayService {
|
||||
|
||||
@Autowired
|
||||
private RedisCache redisCache;
|
||||
|
||||
@Value("${adapay.jsowell.appId}")
|
||||
private String ADAPAY_APP_ID;
|
||||
@@ -70,6 +83,75 @@ public class AdapayMemberService {
|
||||
@Autowired
|
||||
private IPileMerchantInfoService pileMerchantInfoService;
|
||||
|
||||
@Autowired
|
||||
private WxAppletRemoteService wxAppletRemoteService;
|
||||
|
||||
/**
|
||||
* 获取支付参数
|
||||
*/
|
||||
public Map<String, Object> createPayment(PayOrderDTO dto) {
|
||||
log.info("===============使用汇付支付-获取支付参数");
|
||||
// 相同参数重复请求,返回同一个支付对象
|
||||
String redisKey = CacheConstants.ADAPAY_ORDER_PARAM + dto.getOrderCode();
|
||||
Map<String, Object> cacheObject = redisCache.getCacheObject(redisKey);
|
||||
if (cacheObject != null) {
|
||||
// 表示已经获取到支付参数了,后续再有支付请求就拒绝
|
||||
return cacheObject;
|
||||
}
|
||||
|
||||
// 获取支付配置
|
||||
AbstractAdapayConfig config = AdapayConfigFactory.getConfig(dto.getWechatAppId());
|
||||
if (config == null) {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_ADAPAY_CONFIG_IS_NULL_ERROR);
|
||||
}
|
||||
|
||||
// 获取openId
|
||||
String openId = wxAppletRemoteService.getOpenIdByCode(dto.getCode());
|
||||
if (StringUtils.isBlank(openId)) {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_GET_OPEN_ID_BY_CODE_ERROR);
|
||||
}
|
||||
|
||||
// 封装对象
|
||||
String amount = AdapayUtil.formatAmount(dto.getPayAmount()); // 用户支付金额
|
||||
String payMode = Constants.ADAPAY_PAY_MODE_DELAY; // 汇付延时分账
|
||||
CreateAdaPaymentParam createAdaPaymentParam = new CreateAdaPaymentParam();
|
||||
createAdaPaymentParam.setOrder_no(dto.getOrderCode());
|
||||
createAdaPaymentParam.setPay_amt(amount);
|
||||
createAdaPaymentParam.setApp_id(config.getAdapayAppId());
|
||||
createAdaPaymentParam.setPay_channel("wx_lite"); // todo 如果以后有支付宝等别的渠道,这里需要做修改,判断是什么渠道的请求
|
||||
createAdaPaymentParam.setGoods_title(dto.getGoodsTitle());
|
||||
createAdaPaymentParam.setGoods_desc(dto.getGoodsDesc()); // 这个字段是微信支付凭证的商品名
|
||||
Map<String, String> map = Maps.newHashMap();
|
||||
map.put("type", ScenarioEnum.ORDER.getValue());
|
||||
map.put("orderCode", dto.getOrderCode());
|
||||
map.put("payMode", payMode);
|
||||
map.put("memberId", dto.getMemberId());
|
||||
createAdaPaymentParam.setDescription(JSON.toJSONString(map));
|
||||
// 异步通知地址,url为http/https路径,服务器POST回调,URL 上请勿附带参数
|
||||
createAdaPaymentParam.setNotify_url(ADAPAY_CALLBACK_URL);
|
||||
createAdaPaymentParam.setExpend(JSONObject.toJSONString(ImmutableMap.of("open_id", openId)));
|
||||
|
||||
// 延时分账
|
||||
createAdaPaymentParam.setPay_mode(payMode);
|
||||
try {
|
||||
log.info("创建汇付支付参数:{}", JSONObject.toJSONString(createAdaPaymentParam));
|
||||
Map<String, Object> response = Payment.create(BeanMap.create(createAdaPaymentParam), config.getWechatAppId());
|
||||
if (response != null && !response.isEmpty()) {
|
||||
JSONObject expend = JSONObject.parseObject(response.get("expend").toString());
|
||||
JSONObject pay_info = expend.getJSONObject("pay_info");
|
||||
Map<String, Object> resultMap = JSONObject.parseObject(pay_info.toJSONString(), new TypeReference<Map<String, Object>>() {});
|
||||
if (resultMap != null) {
|
||||
// 请求参数放入缓存,15分钟以内返回同一个支付参数
|
||||
redisCache.setCacheObject(redisKey, resultMap, 15, TimeUnit.MINUTES);
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
} catch (BaseAdaPayException e) {
|
||||
log.error("汇付-获取支付对象发生异常", e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建结算账户
|
||||
*
|
||||
@@ -1,9 +1,6 @@
|
||||
package com.jsowell.pile.dto;
|
||||
|
||||
import com.jsowell.pile.domain.OrderBasicInfo;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@@ -49,21 +46,21 @@ public class PayOrderDTO {
|
||||
*/
|
||||
private String lockValue;
|
||||
|
||||
private OrderBasicInfo orderBasicInfo;
|
||||
// private OrderBasicInfo orderBasicInfo;
|
||||
|
||||
/**
|
||||
* 微信小程序appId
|
||||
*/
|
||||
private String wechatAppId;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this, ToStringStyle.JSON_STYLE)
|
||||
.append("memberId", memberId)
|
||||
.append("orderCode", orderCode)
|
||||
.append("payMode", payMode)
|
||||
.append("payAmount", payAmount)
|
||||
.append("code", code)
|
||||
.toString();
|
||||
}
|
||||
/**
|
||||
* 商品标题
|
||||
*/
|
||||
private String goodsTitle;
|
||||
|
||||
/**
|
||||
* 商品描述信息,微信小程序和微信公众号该字段最大长度42个字符
|
||||
* 这个字段是微信支付凭证的商品名
|
||||
*/
|
||||
private String goodsDesc;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package com.jsowell.pile.service;
|
||||
|
||||
import com.jsowell.pile.domain.OrderPileOccupy;
|
||||
import com.jsowell.pile.dto.PayOrderDTO;
|
||||
import com.jsowell.pile.dto.GenerateOccupyOrderDTO;
|
||||
import com.jsowell.pile.dto.QueryOccupyOrderDTO;
|
||||
import com.jsowell.pile.vo.uniapp.OrderPileOccupyVO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface OrderPileOccupyService{
|
||||
int deleteByPrimaryKey(Integer id);
|
||||
|
||||
@@ -52,6 +55,8 @@ public interface OrderPileOccupyService{
|
||||
*/
|
||||
List<OrderPileOccupy> queryUnPayOrderByMemberId(String memberId);
|
||||
|
||||
Map<String, Object> payOccupyPileOrder(PayOrderDTO dto);
|
||||
|
||||
/**
|
||||
* 查询占桩订单列表
|
||||
* @param memberId
|
||||
|
||||
@@ -2,23 +2,17 @@ package com.jsowell.pile.service.impl;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.alibaba.fastjson2.TypeReference;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
||||
import com.huifu.adapay.model.Payment;
|
||||
import com.huifu.adapay.model.PaymentConfirm;
|
||||
import com.jsowell.adapay.common.CreateAdaPaymentParam;
|
||||
import com.jsowell.adapay.common.DivMember;
|
||||
import com.jsowell.adapay.config.AbstractAdapayConfig;
|
||||
import com.jsowell.adapay.factory.AdapayConfigFactory;
|
||||
import com.jsowell.adapay.response.PaymentConfirmResponse;
|
||||
import com.jsowell.adapay.response.PaymentReverseResponse;
|
||||
import com.jsowell.adapay.service.AdapayMemberService;
|
||||
import com.jsowell.adapay.service.AdapayService;
|
||||
import com.jsowell.adapay.vo.OrderSettleResult;
|
||||
import com.jsowell.common.constant.CacheConstants;
|
||||
import com.jsowell.common.constant.Constants;
|
||||
@@ -58,7 +52,6 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.cglib.beans.BeanMap;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -168,7 +161,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
private IPileStationWhitelistService pileStationWhitelistService;
|
||||
|
||||
@Autowired
|
||||
private AdapayMemberService adapayMemberService;
|
||||
private AdapayService adapayService;
|
||||
|
||||
@Autowired
|
||||
private MemberAdapayRecordService memberAdapayRecordService;
|
||||
@@ -1166,7 +1159,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
String paymentId = vo.getPaymentId();
|
||||
BigDecimal deductionAmount = vo.getDeductionAmount();
|
||||
// 调汇付的分账接口 确认交易
|
||||
PaymentConfirmResponse paymentConfirmResponse = adapayMemberService.createPaymentConfirmRequest(paymentId, adapayMemberAccount, deductionAmount, orderCode);
|
||||
PaymentConfirmResponse paymentConfirmResponse = adapayService.createPaymentConfirmRequest(paymentId, adapayMemberAccount, deductionAmount, orderCode);
|
||||
if (paymentConfirmResponse != null) {
|
||||
confirmAmt = confirmAmt.add(new BigDecimal(paymentConfirmResponse.getConfirmed_amt()));
|
||||
feeAmt = feeAmt.add(new BigDecimal(paymentConfirmResponse.getFee_amt()));
|
||||
@@ -2145,7 +2138,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
payOrderDTO.setStartMode(dto.getStartMode());
|
||||
// payOrderDTO.setCode();
|
||||
// payOrderDTO.setLockValue();
|
||||
payOrderDTO.setOrderBasicInfo(basicInfo);
|
||||
// payOrderDTO.setOrderBasicInfo(basicInfo);
|
||||
|
||||
payOrder(payOrderDTO);
|
||||
|
||||
@@ -2358,10 +2351,10 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
String payMode = "delay";
|
||||
if (StringUtils.equals("", payMode)) {
|
||||
// 延迟分账确认的调退款接口
|
||||
adapayMemberService.createRefundRequest(paymentId, refundAmount);
|
||||
adapayService.createRefundRequest(paymentId, refundAmount);
|
||||
} else {
|
||||
// 延迟分账未确认调撤销调撤销接口退款
|
||||
PaymentReverseResponse response = adapayMemberService.createPaymentReverseRequest(
|
||||
PaymentReverseResponse response = adapayService.createPaymentReverseRequest(
|
||||
paymentId, refundAmount, dto.getWechatAppId(), dto.getMemberId(), ScenarioEnum.ORDER.getValue(),
|
||||
dto.getOrderCode());
|
||||
if (response != null) {
|
||||
@@ -2405,7 +2398,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
BigDecimal deductionAmount = vo.getDeductionAmount();
|
||||
|
||||
// 调汇付的交易撤销接口
|
||||
adapayMemberService.createPaymentReverseRequest(paymentId, deductionAmount, dto.getWechatAppId(),
|
||||
adapayService.createPaymentReverseRequest(paymentId, deductionAmount, dto.getWechatAppId(),
|
||||
dto.getMemberId(), ScenarioEnum.BALANCE.getValue(), null);
|
||||
|
||||
// 更新这笔交易的剩余金额
|
||||
@@ -2623,7 +2616,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
public Map<String, Object> payOrder(PayOrderDTO dto) {
|
||||
OrderBasicInfo orderInfo = this.getOrderInfoByOrderCode(dto.getOrderCode());
|
||||
if (orderInfo == null) {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_NULL_ERROR);
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_INFO_IS_NULL);
|
||||
}
|
||||
if (!StringUtils.equals(orderInfo.getPayStatus(), OrderPayStatusEnum.unpaid.getValue())) {
|
||||
// 订单已支付
|
||||
@@ -2635,10 +2628,12 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
balancePayOrder(dto);
|
||||
} else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())) {
|
||||
// 微信支付
|
||||
dto.setOrderBasicInfo(orderInfo);
|
||||
// dto.setOrderBasicInfo(orderInfo);
|
||||
|
||||
// 2023-07-11 全部改为汇付支付
|
||||
Map<String, Object> weixinMap = adapayPayOrder(dto);
|
||||
dto.setGoodsTitle("充电费用");
|
||||
dto.setGoodsDesc("充电桩预付款金额");
|
||||
Map<String, Object> weixinMap = adapayService.createPayment(dto);
|
||||
|
||||
// 返回微信支付参数
|
||||
resultMap.put("weixinMap", weixinMap);
|
||||
@@ -2751,7 +2746,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
// 通过支付id查询退款记录
|
||||
String paymentId = adapayCallbackRecord.getPaymentId();
|
||||
try {
|
||||
resultList = adapayMemberService.queryPaymentReverse(paymentId, wechatAppId);
|
||||
resultList = adapayService.queryPaymentReverse(paymentId, wechatAppId);
|
||||
} catch (BaseAdaPayException e) {
|
||||
logger.error("查询支付撤销对象发生异常", e);
|
||||
}
|
||||
@@ -2798,7 +2793,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
List<PaymentReverseResponse> paymentReverses = queryOrderAdapayRefund(orderBasicInfo);
|
||||
if (CollectionUtils.isEmpty(paymentReverses)) {
|
||||
// 如果没有退款过,重新执行一遍退款
|
||||
PaymentReverseResponse response = adapayMemberService.createPaymentReverseRequest(
|
||||
PaymentReverseResponse response = adapayService.createPaymentReverseRequest(
|
||||
paymentId, refundAmount, wechatAppId, memberId, ScenarioEnum.ORDER.getValue(),
|
||||
orderCode);
|
||||
logger.info("重试订单退款response:{}", JSON.toJSONString(response));
|
||||
@@ -2822,7 +2817,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
private Map<String, Object> adapayPayOrder(PayOrderDTO dto) {
|
||||
/*private Map<String, Object> adapayPayOrder(PayOrderDTO dto) {
|
||||
logger.info("===============使用汇付支付");
|
||||
// 相同参数重复请求,返回同一个支付对象
|
||||
String redisKey = CacheConstants.ADAPAY_ORDER_PARAM + dto.getOrderCode();
|
||||
@@ -2837,11 +2832,12 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_ADAPAY_CONFIG_IS_NULL_ERROR);
|
||||
}
|
||||
|
||||
OrderBasicInfo orderInfo = dto.getOrderBasicInfo();
|
||||
if (orderInfo == null) {
|
||||
// 订单为空重新查询
|
||||
orderInfo = this.getOrderInfoByOrderCode(dto.getOrderCode());
|
||||
}
|
||||
// OrderBasicInfo orderInfo = dto.getOrderBasicInfo();
|
||||
// if (orderInfo == null) {
|
||||
// // 订单为空重新查询
|
||||
// orderInfo = this.getOrderInfoByOrderCode(dto.getOrderCode());
|
||||
// }
|
||||
|
||||
// 获取openId
|
||||
String openId = wxAppletRemoteService.getOpenIdByCode(dto.getCode());
|
||||
if (StringUtils.isBlank(openId)) {
|
||||
@@ -2852,7 +2848,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
String amount = AdapayUtil.formatAmount(dto.getPayAmount()); // 用户支付金额
|
||||
String payMode = Constants.ADAPAY_PAY_MODE_DELAY; // 汇付延时分账
|
||||
CreateAdaPaymentParam createAdaPaymentParam = new CreateAdaPaymentParam();
|
||||
createAdaPaymentParam.setOrder_no(orderInfo.getOrderCode());
|
||||
createAdaPaymentParam.setOrder_no(dto.getOrderCode());
|
||||
createAdaPaymentParam.setPay_amt(amount);
|
||||
createAdaPaymentParam.setApp_id(config.getAdapayAppId());
|
||||
createAdaPaymentParam.setPay_channel("wx_lite"); // todo 如果以后有支付宝等别的渠道,这里需要做修改,判断是什么渠道的请求
|
||||
@@ -2890,7 +2886,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
logger.error("汇付-获取支付对象发生异常", e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}*/
|
||||
|
||||
/**
|
||||
* 余额支付订单逻辑
|
||||
@@ -2911,7 +2907,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT);
|
||||
}
|
||||
BigDecimal principalAmount = memberVO.getPrincipalBalance(); // 会员剩余本金金额
|
||||
// BigDecimal giftAmount = memberVO.getGiftBalance(); // 会员剩余赠送余额
|
||||
BigDecimal giftAmount = memberVO.getGiftBalance(); // 会员剩余赠送余额
|
||||
|
||||
BigDecimal principalPay = null; // 30
|
||||
BigDecimal giftPay = null; // 10
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
package com.jsowell.pile.service.impl;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import com.jsowell.adapay.service.AdapayService;
|
||||
import com.jsowell.common.constant.Constants;
|
||||
import com.jsowell.common.enums.DelFlagEnum;
|
||||
import com.jsowell.common.enums.MemberWalletEnum;
|
||||
import com.jsowell.common.enums.ykc.OrderPayModeEnum;
|
||||
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
|
||||
import com.jsowell.common.exception.BusinessException;
|
||||
import com.jsowell.common.enums.uniapp.OrderPileOccupyPayStatusEnum;
|
||||
import com.jsowell.common.enums.uniapp.OrderPileOccupyStatusEnum;
|
||||
import com.jsowell.common.util.DateUtils;
|
||||
@@ -9,18 +15,18 @@ import com.jsowell.common.util.PageUtils;
|
||||
import com.jsowell.common.util.StringUtils;
|
||||
import com.jsowell.common.util.id.IdUtils;
|
||||
import com.jsowell.pile.domain.OrderPileOccupy;
|
||||
import com.jsowell.pile.dto.PayOrderDTO;
|
||||
import com.jsowell.pile.dto.GenerateOccupyOrderDTO;
|
||||
import com.jsowell.pile.dto.QueryOccupyOrderDTO;
|
||||
import com.jsowell.pile.dto.QueryOrderDTO;
|
||||
import com.jsowell.pile.mapper.OrderPileOccupyMapper;
|
||||
import com.jsowell.pile.service.IOrderBasicInfoService;
|
||||
import com.jsowell.pile.service.IPileBasicInfoService;
|
||||
import com.jsowell.pile.service.IPileBillingTemplateService;
|
||||
import com.jsowell.pile.service.OrderPileOccupyService;
|
||||
import com.jsowell.pile.service.*;
|
||||
import com.jsowell.pile.vo.base.PileInfoVO;
|
||||
import com.jsowell.pile.vo.uniapp.MemberVO;
|
||||
import com.jsowell.pile.vo.uniapp.OrderPileOccupyVO;
|
||||
import com.jsowell.pile.vo.web.BillingTemplateVO;
|
||||
import com.jsowell.pile.vo.web.OrderListVO;
|
||||
import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -28,10 +34,11 @@ import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class OrderPileOccupyServiceImpl implements OrderPileOccupyService{
|
||||
public class OrderPileOccupyServiceImpl implements OrderPileOccupyService {
|
||||
|
||||
@Resource
|
||||
private OrderPileOccupyMapper orderPileOccupyMapper;
|
||||
@@ -45,6 +52,12 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService{
|
||||
@Resource
|
||||
private IPileBillingTemplateService pileBillingTemplateService;
|
||||
|
||||
@Resource
|
||||
private AdapayService adapayService;
|
||||
|
||||
@Resource
|
||||
private IMemberBasicInfoService memberBasicInfoService;
|
||||
|
||||
@Override
|
||||
public int deleteByPrimaryKey(Integer id) {
|
||||
return orderPileOccupyMapper.deleteByPrimaryKey(id);
|
||||
@@ -102,6 +115,7 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService{
|
||||
|
||||
/**
|
||||
* 根据占桩订单编号查询占桩订单
|
||||
*
|
||||
* @param occupyCode 占桩订单编号
|
||||
* @return
|
||||
*/
|
||||
@@ -115,6 +129,7 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService{
|
||||
|
||||
/**
|
||||
* 查询占桩订单列表
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
@@ -126,6 +141,7 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService{
|
||||
/**
|
||||
* 生成占桩订单
|
||||
* 在会员操作降地锁后,就生成占桩订单
|
||||
*
|
||||
* @param dto 会员id 充电桩编号 充电桩枪口号
|
||||
*/
|
||||
@Override
|
||||
@@ -157,6 +173,7 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService{
|
||||
/**
|
||||
* 收到地锁升起指令,调用这个方法,停止计时
|
||||
* 占桩订单停止计费/停止占桩订单计费
|
||||
*
|
||||
* @param pileSn
|
||||
* @param connectorCode
|
||||
*/
|
||||
@@ -270,6 +287,7 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService{
|
||||
|
||||
/**
|
||||
* 查询占桩订单列表
|
||||
*
|
||||
* @param memberId
|
||||
* @return
|
||||
*/
|
||||
@@ -297,6 +315,68 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService{
|
||||
public OrderPileOccupy getOrderInfoByPile(String pileSn, String connectorCode) {
|
||||
return orderPileOccupyMapper.getOrderInfoByPile(pileSn, connectorCode);
|
||||
}
|
||||
/*
|
||||
* 支付占桩订单
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Object> payOccupyPileOrder(PayOrderDTO dto) {
|
||||
// 查询占桩订单详情
|
||||
OrderPileOccupy orderPileOccupy = queryByOccupyCode(dto.getOrderCode());
|
||||
if (orderPileOccupy == null) {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_INFO_IS_NULL);
|
||||
}
|
||||
// 支付方式
|
||||
Map<String, Object> resultMap = Maps.newHashMap();
|
||||
if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) {
|
||||
// 余额支付占桩订单
|
||||
balancePayOccupyPileOrder(dto);
|
||||
} else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())) {
|
||||
// 返回支付参数
|
||||
dto.setGoodsTitle("占桩费用");
|
||||
dto.setGoodsDesc("占桩订单金额");
|
||||
Map<String, Object> weixinMap = adapayService.createPayment(dto);
|
||||
resultMap.put("weixinMap", weixinMap);
|
||||
} else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) { // 白名单支付
|
||||
whiteListPayOccupyPileOrder(dto);
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
private void balancePayOccupyPileOrder(PayOrderDTO dto) {
|
||||
// 查会员余额
|
||||
MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId());
|
||||
if (memberVO == null) {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_MEMBER_NOT_FOUND_ERROR);
|
||||
}
|
||||
|
||||
// 校验金额
|
||||
BigDecimal principalBalance = memberVO.getPrincipalBalance();
|
||||
if (dto.getPayAmount().compareTo(principalBalance) > 0) {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT);
|
||||
}
|
||||
// 扣除会员余额
|
||||
UpdateMemberBalanceDTO updateMemberBalanceDTO = new UpdateMemberBalanceDTO();
|
||||
updateMemberBalanceDTO.setMemberId(dto.getMemberId());
|
||||
updateMemberBalanceDTO.setUpdatePrincipalBalance(dto.getPayAmount()); // 更新会员本金金额,单位元
|
||||
updateMemberBalanceDTO.setType(MemberWalletEnum.TYPE_OUT.getValue());
|
||||
updateMemberBalanceDTO.setSubType(MemberWalletEnum.SUBTYPE_PAYMENT_FOR_ORDER.getValue());
|
||||
memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO);
|
||||
|
||||
// 更新占桩订单状态
|
||||
OrderPileOccupy orderPileOccupy = queryByOccupyCode(dto.getOrderCode());
|
||||
orderPileOccupy.setStatus(OrderPileOccupyStatusEnum.ORDER_COMPLETE.getValue());
|
||||
orderPileOccupy.setPayStatus(OrderPileOccupyPayStatusEnum.PAYMENT_COMPLETION.getValue());
|
||||
updateByPrimaryKeySelective(orderPileOccupy);
|
||||
}
|
||||
|
||||
private void whiteListPayOccupyPileOrder(PayOrderDTO dto) {
|
||||
// 更新占桩订单状态
|
||||
OrderPileOccupy orderPileOccupy = queryByOccupyCode(dto.getOrderCode());
|
||||
orderPileOccupy.setStatus(OrderPileOccupyStatusEnum.ORDER_COMPLETE.getValue());
|
||||
orderPileOccupy.setPayStatus(OrderPileOccupyPayStatusEnum.NO_PAYMENT_REQUIRED.getValue());
|
||||
updateByPrimaryKeySelective(orderPileOccupy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ public class MemberVO {
|
||||
/**
|
||||
* 赠送金额
|
||||
*/
|
||||
// private BigDecimal giftBalance;
|
||||
private BigDecimal giftBalance;
|
||||
|
||||
/**
|
||||
* 总账户余额
|
||||
|
||||
Reference in New Issue
Block a user