Переглянути джерело

Merge remote-tracking branch 'origin/master'

xw 1 місяць тому
батько
коміт
4edd4136d3

+ 3 - 0
fs-service/src/main/java/com/fs/company/mapper/CompanyConfigMapper.java

@@ -76,6 +76,9 @@ public interface CompanyConfigMapper
     @Select("select config_value from company_config where company_id=#{companyId} and config_key='redPacket:config' ")
     String selectRedPacketConfigByKey(Long companyId);
 
+    @Select("select config_value from company_config where company_id=#{companyId} and config_key='his.AppRedPacket' ")
+    String selectRedPacketConfigByKeyApp(Long companyId);
+
     @Select("select \n" +
             "id,\n" +
             "name,\n" +

+ 1 - 0
fs-service/src/main/java/com/fs/company/service/ICompanyConfigService.java

@@ -72,6 +72,7 @@ public interface ICompanyConfigService
     CompanyConfig selectCompanyConfigByServerKey(String key);
 
     String selectRedPacketConfigByKey(Long companyId);
+    String selectRedPacketConfigByKeyApp(Long companyId);
 
     /**
      * 获取公司可配置小程序列表

+ 25 - 0
fs-service/src/main/java/com/fs/company/service/impl/CompanyConfigServiceImpl.java

@@ -44,6 +44,7 @@ public class CompanyConfigServiceImpl implements ICompanyConfigService
     @Autowired
     private RedisTemplate<String, String> redisTemplate; // 注入RedisTemplate
     private static final String REDIS_KEY_PREFIX = "red_packet_config:";
+    private static final String REDIS_KEY_PREFIX_APP = "red_packet_config_app:";
     private static final long CACHE_TIMEOUT = 24 * 60 * 60;
 
     @Autowired
@@ -177,6 +178,30 @@ public class CompanyConfigServiceImpl implements ICompanyConfigService
         }
     }
 
+    @Override
+    public String selectRedPacketConfigByKeyApp(Long companyId) {
+        Asserts.notNull(companyId,"公司id不能为空!");
+        String redisKey = REDIS_KEY_PREFIX_APP + companyId;
+        String cachedConfig = redisTemplate.opsForValue().get(redisKey);
+        if (cachedConfig != null) {
+            return cachedConfig;
+        }
+        synchronized (getSynchronizationObject(companyId)) {
+            cachedConfig = redisTemplate.opsForValue().get(redisKey);
+
+            if (cachedConfig != null) {
+                return cachedConfig;
+            }
+            String configFromDb = companyConfigMapper.selectRedPacketConfigByKeyApp(companyId);
+            if (configFromDb != null) {
+                redisTemplate.opsForValue().set(redisKey, configFromDb, CACHE_TIMEOUT, TimeUnit.SECONDS);
+            } else {
+                redisTemplate.opsForValue().set(redisKey, "", 5 * 60, TimeUnit.SECONDS);
+            }
+            return configFromDb;
+        }
+    }
+
     private static final ConcurrentHashMap<Long, Object> LOCKS = new ConcurrentHashMap<>();
     private static Object getSynchronizationObject(Long companyId) {
         return LOCKS.computeIfAbsent(companyId, k -> new Object());

+ 1 - 0
fs-service/src/main/java/com/fs/his/service/IFsStorePaymentService.java

@@ -120,6 +120,7 @@ public interface IFsStorePaymentService
     String v3TransferNotifyApp(String notifyData, HttpServletRequest request);
 
     String v3TransferNotifyWithCompanyId(Long companyId,String notifyData, HttpServletRequest request);
+    String v3TransferNotifyWithCompanyIdApp(Long companyId,String notifyData, HttpServletRequest request);
 
 
 

+ 133 - 72
fs-service/src/main/java/com/fs/his/service/impl/FsStorePaymentServiceImpl.java

@@ -1121,105 +1121,166 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
     @Override
     public String v3TransferNotify(String notifyData, HttpServletRequest request) {
         logger.info("zyp \n【收到转账回调V3】:{}",notifyData);
-        try {
-            String json = configService.selectConfigByKey("redPacket.config");
-            RedPacketConfig config = JSONUtil.toBean(json, RedPacketConfig.class);
-            //创建微信订单
-            WxPayConfig payConfig = new WxPayConfig();
-            BeanUtils.copyProperties(config,payConfig);
-            WxPayService wxPayService = new WxPayServiceImpl();
-            wxPayService.setConfig(payConfig);
-            SignatureHeader signatureHeader = new SignatureHeader();
-            signatureHeader.setTimeStamp(request.getHeader("Wechatpay-Timestamp"));
-            signatureHeader.setNonce(request.getHeader("Wechatpay-Nonce"));
-            signatureHeader.setSerial(request.getHeader("Wechatpay-Serial"));
-            signatureHeader.setSignature(request.getHeader("Wechatpay-Signature"));
-            TransferBillsNotifyResult result = wxPayService.parseTransferBillsNotifyV3Result(notifyData,signatureHeader);
-            logger.info("到零钱回调1:{}",result.getResult());
-            if (result.getResult().getState().equals("SUCCESS")) {
-                R r = redPacketLogService.syncRedPacket(result.getResult().getOutBillNo(),result.getResult().getTransferBillNo());
-                logger.info("result:{}",r);
-                if (r.get("code").equals(200)){
-                    return WxPayNotifyResponse.success("处理成功");
-                }else {
-                    return WxPayNotifyResponse.fail("");
-                }
-            }else {
-                return WxPayNotifyResponse.fail("");
-            }
-        } catch (WxPayException e) {
-            e.printStackTrace();
-            logger.error("zyp \n【转账回调异常】:{}", e.getReturnMsg());
-            return WxPayNotifyResponse.fail(e.getMessage());
-        }
+        String json = configService.selectConfigByKey("redPacket.config");
+        return handleTransferV3Notify(json,notifyData,request);
+//        try {
+//            String json = configService.selectConfigByKey("redPacket.config");
+//            RedPacketConfig config = JSONUtil.toBean(json, RedPacketConfig.class);
+//            //创建微信订单
+//            WxPayConfig payConfig = new WxPayConfig();
+//            BeanUtils.copyProperties(config,payConfig);
+//            WxPayService wxPayService = new WxPayServiceImpl();
+//            wxPayService.setConfig(payConfig);
+//            SignatureHeader signatureHeader = new SignatureHeader();
+//            signatureHeader.setTimeStamp(request.getHeader("Wechatpay-Timestamp"));
+//            signatureHeader.setNonce(request.getHeader("Wechatpay-Nonce"));
+//            signatureHeader.setSerial(request.getHeader("Wechatpay-Serial"));
+//            signatureHeader.setSignature(request.getHeader("Wechatpay-Signature"));
+//            TransferBillsNotifyResult result = wxPayService.parseTransferBillsNotifyV3Result(notifyData,signatureHeader);
+//            logger.info("到零钱回调1:{}",result.getResult());
+//            if (result.getResult().getState().equals("SUCCESS")) {
+//                R r = redPacketLogService.syncRedPacket(result.getResult().getOutBillNo(),result.getResult().getTransferBillNo());
+//                logger.info("result:{}",r);
+//                if (r.get("code").equals(200)){
+//                    return WxPayNotifyResponse.success("处理成功");
+//                }else {
+//                    return WxPayNotifyResponse.fail("");
+//                }
+//            }else {
+//                return WxPayNotifyResponse.fail("");
+//            }
+//        } catch (WxPayException e) {
+//            e.printStackTrace();
+//            logger.error("zyp \n【转账回调异常】:{}", e.getReturnMsg());
+//            return WxPayNotifyResponse.fail(e.getMessage());
+//        }
     }
 
     @Override
     public String v3TransferNotifyApp(String notifyData, HttpServletRequest request) {
         logger.info("zyp \n【app-收到转账回调V3】:{}",notifyData);
-        try {
-            String json = configService.selectConfigByKey("his.AppRedPacket");
-            RedPacketConfig config = JSONUtil.toBean(json, RedPacketConfig.class);
-            //创建微信订单
-            WxPayConfig payConfig = new WxPayConfig();
-            BeanUtils.copyProperties(config,payConfig);
-            WxPayService wxPayService = new WxPayServiceImpl();
-            wxPayService.setConfig(payConfig);
-            SignatureHeader signatureHeader = new SignatureHeader();
-            signatureHeader.setTimeStamp(request.getHeader("Wechatpay-Timestamp"));
-            signatureHeader.setNonce(request.getHeader("Wechatpay-Nonce"));
-            signatureHeader.setSerial(request.getHeader("Wechatpay-Serial"));
-            signatureHeader.setSignature(request.getHeader("Wechatpay-Signature"));
-            TransferBillsNotifyResult result = wxPayService.parseTransferBillsNotifyV3Result(notifyData,signatureHeader);
-            logger.info("app-到零钱回调:{}",result.getResult());
-            if (result.getResult().getState().equals("SUCCESS")) {
-                R r = redPacketLogService.syncRedPacket(result.getResult().getOutBillNo(),result.getResult().getTransferBillNo());
-                logger.info("app,result:{}",r);
-                if (r.get("code").equals(200)){
-                    return WxPayNotifyResponse.success("处理成功");
-                }else {
-                    return WxPayNotifyResponse.fail("");
-                }
-            }else {
-                return WxPayNotifyResponse.fail("");
-            }
-        } catch (WxPayException e) {
-            e.printStackTrace();
-            logger.error("zyp \n【app-转账回调异常】:{}", e.getReturnMsg());
-            return WxPayNotifyResponse.fail(e.getMessage());
-        }
+        String json = configService.selectConfigByKey("his.AppRedPacket");
+        return handleTransferV3Notify(json,notifyData,request);
+//        try {
+//            String json = configService.selectConfigByKey("his.AppRedPacket");
+//            RedPacketConfig config = JSONUtil.toBean(json, RedPacketConfig.class);
+//            //创建微信订单
+//            WxPayConfig payConfig = new WxPayConfig();
+//            BeanUtils.copyProperties(config,payConfig);
+//            WxPayService wxPayService = new WxPayServiceImpl();
+//            wxPayService.setConfig(payConfig);
+//            SignatureHeader signatureHeader = new SignatureHeader();
+//            signatureHeader.setTimeStamp(request.getHeader("Wechatpay-Timestamp"));
+//            signatureHeader.setNonce(request.getHeader("Wechatpay-Nonce"));
+//            signatureHeader.setSerial(request.getHeader("Wechatpay-Serial"));
+//            signatureHeader.setSignature(request.getHeader("Wechatpay-Signature"));
+//            TransferBillsNotifyResult result = wxPayService.parseTransferBillsNotifyV3Result(notifyData,signatureHeader);
+//            logger.info("app-到零钱回调:{}",result.getResult());
+//            if (result.getResult().getState().equals("SUCCESS")) {
+//                R r = redPacketLogService.syncRedPacket(result.getResult().getOutBillNo(),result.getResult().getTransferBillNo());
+//                logger.info("app,result:{}",r);
+//                if (r.get("code").equals(200)){
+//                    return WxPayNotifyResponse.success("处理成功");
+//                }else {
+//                    return WxPayNotifyResponse.fail("");
+//                }
+//            }else {
+//                return WxPayNotifyResponse.fail("");
+//            }
+//        } catch (WxPayException e) {
+//            e.printStackTrace();
+//            logger.error("zyp \n【app-转账回调异常】:{}", e.getReturnMsg());
+//            return WxPayNotifyResponse.fail(e.getMessage());
+//        }
     }
 
     @Override
     public String v3TransferNotifyWithCompanyId(Long companyId, String notifyData, HttpServletRequest request) {
         logger.info("分公司回调V3::companyId:{}",companyId);
         logger.info("zyp \n【收到转账回调V3::分公司】:{}",notifyData);
+        String json = companyConfigService.selectRedPacketConfigByKey(companyId);
+        return handleTransferV3Notify(json,notifyData,request);
+//        try {
+////            String json = configService.selectConfigByKey("redPacket.config");
+//            String json = companyConfigService.selectRedPacketConfigByKey(companyId);
+//            RedPacketConfig config = JSONUtil.toBean(json, RedPacketConfig.class);
+//
+//            //创建微信订单
+//            WxPayConfig payConfig = new WxPayConfig();
+//            BeanUtils.copyProperties(config,payConfig);
+//            WxPayService wxPayService = new WxPayServiceImpl();
+//            wxPayService.setConfig(payConfig);
+//            SignatureHeader signatureHeader = new SignatureHeader();
+//            signatureHeader.setTimeStamp(request.getHeader("Wechatpay-Timestamp"));
+//            signatureHeader.setNonce(request.getHeader("Wechatpay-Nonce"));
+//            signatureHeader.setSerial(request.getHeader("Wechatpay-Serial"));
+//            signatureHeader.setSignature(request.getHeader("Wechatpay-Signature"));
+//            TransferBillsNotifyResult result = wxPayService.parseTransferBillsNotifyV3Result(notifyData,signatureHeader);
+//            logger.info("到零钱回调1:{}",result.getResult());
+//            if (result.getResult().getState().equals("SUCCESS")) {
+//                R r = redPacketLogService.syncRedPacket(result.getResult().getOutBillNo(),result.getResult().getTransferBillNo());
+//                logger.info("result:{}",r);
+//                if (r.get("code").equals(200)){
+//                    return WxPayNotifyResponse.success("处理成功");
+//                }else {
+//                    return WxPayNotifyResponse.fail("");
+//                }
+//            }else {
+//                return WxPayNotifyResponse.fail("");
+//            }
+//        } catch (WxPayException e) {
+//            e.printStackTrace();
+//            logger.error("zyp \n【转账回调异常】:{}", e.getReturnMsg());
+//            return WxPayNotifyResponse.fail(e.getMessage());
+//        }
+    }
+
+    @Override
+    public String v3TransferNotifyWithCompanyIdApp(Long companyId, String notifyData, HttpServletRequest request) {
+        logger.info("分公司回调V3app::app的companyId:{}",companyId);
+        logger.info("zyp \n【app收到转账回调V3::分公司】:{}",notifyData);
+
+        String json = companyConfigService.selectRedPacketConfigByKeyApp(companyId);
+
+        return handleTransferV3Notify(json,notifyData,request);
+
+    }
+
+
+    private String handleTransferV3Notify(String json, String notifyData, HttpServletRequest request) {
+        logger.info("zyp \n【收到转账回调V3】:{}", notifyData);
         try {
-//            String json = configService.selectConfigByKey("redPacket.config");
-            String json = companyConfigService.selectRedPacketConfigByKey(companyId);
+
             RedPacketConfig config = JSONUtil.toBean(json, RedPacketConfig.class);
 
             //创建微信订单
             WxPayConfig payConfig = new WxPayConfig();
-            BeanUtils.copyProperties(config,payConfig);
+            BeanUtils.copyProperties(config, payConfig);
             WxPayService wxPayService = new WxPayServiceImpl();
             wxPayService.setConfig(payConfig);
+
             SignatureHeader signatureHeader = new SignatureHeader();
             signatureHeader.setTimeStamp(request.getHeader("Wechatpay-Timestamp"));
             signatureHeader.setNonce(request.getHeader("Wechatpay-Nonce"));
             signatureHeader.setSerial(request.getHeader("Wechatpay-Serial"));
             signatureHeader.setSignature(request.getHeader("Wechatpay-Signature"));
-            TransferBillsNotifyResult result = wxPayService.parseTransferBillsNotifyV3Result(notifyData,signatureHeader);
-            logger.info("到零钱回调1:{}",result.getResult());
+
+            TransferBillsNotifyResult result = wxPayService.parseTransferBillsNotifyV3Result(notifyData, signatureHeader);
+            logger.info("到零钱回调1:{}", result.getResult());
+
             if (result.getResult().getState().equals("SUCCESS")) {
-                R r = redPacketLogService.syncRedPacket(result.getResult().getOutBillNo(),result.getResult().getTransferBillNo());
-                logger.info("result:{}",r);
-                if (r.get("code").equals(200)){
+                R r = redPacketLogService.syncRedPacket(
+                        result.getResult().getOutBillNo(),
+                        result.getResult().getTransferBillNo()
+                );
+                logger.info("result:{}", r);
+
+                if (r.get("code").equals(200)) {
                     return WxPayNotifyResponse.success("处理成功");
-                }else {
+                } else {
                     return WxPayNotifyResponse.fail("");
                 }
-            }else {
+            } else {
                 return WxPayNotifyResponse.fail("");
             }
         } catch (WxPayException e) {

+ 7 - 0
fs-user-app/src/main/java/com/fs/app/controller/course/CourseTransferController.java

@@ -91,6 +91,13 @@ public class CourseTransferController {
         return paymentService.v3TransferNotifyWithCompanyId(companyId,notifyData,request);
     }
 
+    @PostMapping( "/v3TransferNotifyWithCompanyIdApp/{companyId}")
+    public String v3TransferNotifyWithCompanyIdApp(@PathVariable("companyId") Long companyId,@RequestBody String notifyData,HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+        return paymentService.v3TransferNotifyWithCompanyIdApp(companyId,notifyData,request);
+    }
+
+
     @Autowired
     private IFsCourseRedPacketLogService fsCourseRedPacketLogService;