From f57a59c0efcd52d35b8b5736073ce3f7961c979c Mon Sep 17 00:00:00 2001 From: zhengfangyuan Date: Wed, 10 Aug 2022 15:47:29 +0800 Subject: [PATCH] fix payAccount --- .../java/com/iformall/controller/BaseController.java | 11 +++++++++++ .../com/iformall/controller/WxCashOutController.java | 4 ++-- .../com/iformall/controller/WxMicroPayController.java | 6 +++--- .../interceptor/AuthorizationInterceptor.java | 1 + .../java/com/iformall/schedule/CashOutSchedule.java | 2 +- .../java/com/iformall/service/WxOrderService.java | 2 +- .../com/iformall/service/WxPayAccountService.java | 2 +- .../iformall/service/impl/WxCashOutServiceImpl.java | 2 +- .../com/iformall/service/impl/WxOrderServiceImpl.java | 9 ++++++--- .../service/impl/WxPayAccountServiceImpl.java | 7 +------ .../iformall/service/impl/WxPayOrderServiceImpl.java | 4 ++-- 11 files changed, 30 insertions(+), 20 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java b/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java index 17d2fe6ae..177b86c8d 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java @@ -4,6 +4,7 @@ package com.iformall.controller; import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.enums.EnumAppPlat; +import com.iformall.enums.EnumPayVersion; import com.iformall.service.CUserTokenService; import com.iformall.utils.RedisCacheUtils; import lombok.extern.slf4j.Slf4j; @@ -13,6 +14,7 @@ import com.iformall.domain.po.base.TenantEntity; import com.iformall.exception.MallinkException; import com.iformall.service.WxAppinfoService; import com.iformall.service.WxMerchantBUserService; +import com.iformall.service.WxPayAccountService; import com.iformall.service.wechat.FmOpenService; import com.iformall.utils.Constant; import com.iformall.utils.IPUtil; @@ -40,6 +42,9 @@ public class BaseController { @Autowired private WxAppinfoService wxAppinfoService; + @Autowired + private WxPayAccountService wxPayAccountService; + @Autowired MaUtil maUtil; @@ -105,6 +110,12 @@ public class BaseController { return id; } + public WxAppinfo getCurrentApp() { + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + WxAppinfo appInfo = (WxAppinfo) request.getAttribute(Constant.APP_INFO); + return appInfo; + } + public CUser getCUser() { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); BaseCUserEntity baseuser = (BaseCUserEntity) request.getAttribute(Constant.REQUEST_C_USER_KEY); diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCashOutController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCashOutController.java index 20f0bd531..92c255253 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCashOutController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCashOutController.java @@ -109,8 +109,8 @@ public class WxCashOutController extends BaseController { Map resultMap = new HashMap(); resultMap.put("cashOutCount", merchant.getCashOutCount()); resultMap.put("cashOutNumber", merchant.getCashOutNumber()); - - WxPayAccount payAccount= wxPayAccountService.getByTenantId(mall.getTenantId()); + WxAppinfo appInfo = getCurrentApp(); + WxPayAccount payAccount= wxPayAccountService.getById(appInfo.getPayId()); if (payAccount.getShare().intValue() == EnumPayShare.YES.getCode().intValue()) { resultMap.put("cashOutSupport", 0); }else { diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java index 95a5f19a8..9c6d8c886 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java @@ -74,10 +74,10 @@ public class WxMicroPayController extends BaseController { //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); String authCode = paramMap.get("authCode"); String totalFeeStr = paramMap.get("totalFee"); - return saveMicopayOrder(authCode, totalFeeStr, EnumPayWay.PAY_WAY_WECHAT_MA, request); + return saveMicopayOrder(authCode, totalFeeStr, EnumPayWay.PAY_WAY_WECHAT_MA,EnumPayVersion.WX_PAY_V2, request); } - private ResultData saveMicopayOrder(String authCode,String totalFeeStr,EnumPayWay payWay,HttpServletRequest request) { + private ResultData saveMicopayOrder(String authCode,String totalFeeStr,EnumPayWay payWay,EnumPayVersion payVersion,HttpServletRequest request) { if (StringUtils.isBlank(authCode)) { logger.error("authCode不能为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "authCode不能为空"); @@ -97,7 +97,7 @@ public class WxMicroPayController extends BaseController { WxOrder order = null; try { - order = wxOrderService.saveMicroPayOrder(user, totalFeeStr,payWay); + order = wxOrderService.saveMicroPayOrder(user, totalFeeStr,payWay,payVersion); } catch (MallinkException e) { logger.error("saveMicopayOrder 1" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); diff --git a/mallinkBApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java b/mallinkBApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java index ffbe4b2a1..3e33eb8b8 100644 --- a/mallinkBApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java +++ b/mallinkBApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java @@ -84,6 +84,7 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { request.setAttribute(Constant.LOGIN_USER_KEY, user.getId()); request.setAttribute(Constant.TENANT_ID, tenantId); request.setAttribute(Constant.REQUEST_C_USER_KEY, user); + request.setAttribute(Constant.APP_INFO, user.getAppinfo()); if (StringUtils.isNotBlank(parenTenantId)) { request.setAttribute(Constant.PARENT_TENANT_ID, parenTenantId); } diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CashOutSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CashOutSchedule.java index ed9fcf1a0..17a2411a2 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CashOutSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CashOutSchedule.java @@ -120,7 +120,7 @@ public class CashOutSchedule { if (null == appInfo) { return; } - WxPayAccount payAccount = wxPayAccountService.getByTenantId(cashout.getTenantId()); + WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId()); if (null == payAccount) { return; } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index f7497501c..cc4222a6b 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -61,7 +61,7 @@ public interface WxOrderService { * @param totalFeeStr * @return 订单id */ - WxOrder saveMicroPayOrder(WxMerchantBUser user, String totalFeeStr,EnumPayWay payWay); + WxOrder saveMicroPayOrder(WxMerchantBUser user, String totalFeeStr,EnumPayWay payWay,EnumPayVersion payVersion); /** * 付款码支付v2 diff --git a/mallinkService/src/main/java/com/iformall/service/WxPayAccountService.java b/mallinkService/src/main/java/com/iformall/service/WxPayAccountService.java index c6381970f..7e9619073 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPayAccountService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPayAccountService.java @@ -50,7 +50,7 @@ public interface WxPayAccountService { void deleteById(Long id); - WxPayAccount getByTenantId(String te); + //WxPayAccount getByTenantId(String te); WxPayService getWxPayService(String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCashOutServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCashOutServiceImpl.java index 3510217ed..8bffe3adb 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCashOutServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCashOutServiceImpl.java @@ -239,7 +239,7 @@ public class WxCashOutServiceImpl implements WxCashOutService { if (null == appInfo) { return; } - WxPayAccount payAccount = wxPayAccountService.getByTenantId(tenantEntity.getTenantId()); + WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId()); if (null == payAccount) { return; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index 5002441e1..5a810625e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -1086,7 +1086,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveMicroPayOrder(WxMerchantBUser user, String totalFeeStr,EnumPayWay payWay) { + public WxOrder saveMicroPayOrder(WxMerchantBUser user, String totalFeeStr,EnumPayWay payWay,EnumPayVersion payVersion) { // 检查用户 if (user == null) { logger.error("用户不存在"); @@ -1121,6 +1121,7 @@ public class WxOrderServiceImpl implements WxOrderService { order.updateTenantInfo(wxMerchant); order.setPayment(payment); order.setPayVendor(payWay.getCode()); + order.setPayVersion(payVersion.getCode()); order.setOrderType(EnumComposeOrder.SINGLE.getCode()); order.setCreateDate(new Date()); wxBatchOrderMapper.insert(order); @@ -1137,8 +1138,8 @@ public class WxOrderServiceImpl implements WxOrderService { record.updateTenantInfo(user); record.setOrderNumber(orderNumber); record.setType(EnumOrderType.MICROPAY.getCode()); - record.setPayVendor(EnumPayWay.PAY_WAY_WECHAT_MA.getCode()); - record.setPayVersion(EnumPayVersion.WX_PAY_V2.getCode()); + record.setPayVendor(payWay.getCode()); + record.setPayVersion(payVersion.getCode()); record.setProductId(user.getId()); record.setPaymentType(EnumPayType.PAY_PAYMENT.getCode()); record.setPayment(payment); @@ -1194,6 +1195,7 @@ public class WxOrderServiceImpl implements WxOrderService { order.updateTenantInfo(wxMerchant); order.setPayment(payment); order.setPayVendor(EnumPayWay.PAY_WAY_WECHAT_MA.getCode()); + order.setPayVersion(EnumPayVersion.WX_PAY_V2.getCode()); order.setOrderType(EnumComposeOrder.SINGLE.getCode()); order.setCreateDate(new Date()); wxBatchOrderMapper.insert(order); @@ -1250,6 +1252,7 @@ public class WxOrderServiceImpl implements WxOrderService { order.updateTenantInfo(merchant); order.setPayment(payment); order.setPayVendor(EnumPayWay.PAY_WAY_PREPAIDCARD.getCode()); + order.setPayVersion(EnumPayVersion.NO_VERSION.getCode()); order.setOrderType(EnumComposeOrder.SINGLE.getCode()); order.setCreateDate(new Date()); wxBatchOrderMapper.insert(order); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayAccountServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayAccountServiceImpl.java index 2fe5696ac..ea8b48570 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayAccountServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayAccountServiceImpl.java @@ -79,17 +79,12 @@ public class WxPayAccountServiceImpl implements WxPayAccountService { wxPayAccountMapper.deleteById(id); } - @Override - public WxPayAccount getByTenantId(String tenantId) { - return wxPayAccountMapper.getByTenantId(tenantId); - } - @Override public WxPayService getWxPayService(String tenantId) { TenantEntity tenantEntity = new TenantEntity(); tenantEntity.setTenantId(tenantId); WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(tenantEntity, EnumAppPlat.WX); - WxPayAccount payAccount = this.getByTenantId(tenantId); + WxPayAccount payAccount = this.getById(cAppInfo.getPayId()); if(cAppInfo != null && payAccount != null){ return maUtil.getWxPayService(cAppInfo,payAccount); }else{ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 1f5b201cd..f2be6d675 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -751,7 +751,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { public ResultData payOrderClose(WxAppinfo appInfo, WxPayOrder record) { WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); try { - PayAdapterResult result = payServiceFactory.getPayAdapterService(record.getPayVendor(),payAccount.getPayVersion()).payOrderClose(appInfo, record, payAccount); + PayAdapterResult result = payServiceFactory.getPayAdapterService(record.getPayVendor(),record.getPayVersion()).payOrderClose(appInfo, record, payAccount); if (result.isSuccess()) { record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_CANCEL.getCode()); }else { @@ -788,7 +788,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { WxAppinfo appInfo = wxAppinfoService.getCAppInfo(record,EnumPayWay.getEnum(record.getPayVendor()).getPlat()); WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); try { - PayAdapterResult result = payServiceFactory.getPayAdapterService(record.getPayVendor(),payAccount.getPayVersion()).payOrderReverse(appInfo, record, payAccount); + PayAdapterResult result = payServiceFactory.getPayAdapterService(record.getPayVendor(),record.getPayVersion()).payOrderReverse(appInfo, record, payAccount); if (result.isSuccess()) { record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_REVERSE.getCode()); record.setUpdateTime(new Date());