Browse Source

多小程序所以汇付支付接口添加appid

ct 3 days ago
parent
commit
413590bda2
17 changed files with 502 additions and 61 deletions
  1. 1 0
      fs-service/src/main/java/com/fs/course/param/FsUserCourseOrderDoPayParam.java
  2. 1 0
      fs-service/src/main/java/com/fs/course/param/FsUserVipOrderPayUParam.java
  3. 85 15
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseProductOrderServiceImpl.java
  4. 63 6
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseOrderServiceImpl.java
  5. 63 6
      fs-service/src/main/java/com/fs/course/service/impl/FsUserVipOrderServiceImpl.java
  6. 4 0
      fs-service/src/main/java/com/fs/erp/dto/sdk/wangdian/api/WdtClient.java
  7. 2 2
      fs-service/src/main/java/com/fs/erp/service/impl/WdtErpGoodsServiceImpl.java
  8. 14 0
      fs-service/src/main/java/com/fs/his/domain/FsStorePayment.java
  9. 1 0
      fs-service/src/main/java/com/fs/his/mapper/FsStorePaymentMapper.java
  10. 2 0
      fs-service/src/main/java/com/fs/his/param/FsStorePaymentParam.java
  11. 104 10
      fs-service/src/main/java/com/fs/his/service/impl/FsPackageOrderServiceImpl.java
  12. 47 9
      fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java
  13. 32 2
      fs-service/src/main/java/com/fs/his/service/impl/FsStorePaymentServiceImpl.java
  14. 6 0
      fs-service/src/main/java/com/fs/his/service/impl/FsUserCouponServiceImpl.java
  15. 2 1
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreCartScrmServiceImpl.java
  16. 9 1
      fs-service/src/main/resources/mapper/his/FsStorePaymentMapper.xml
  17. 66 9
      fs-user-app/src/main/java/com/fs/app/controller/InquiryOrderController.java

+ 1 - 0
fs-service/src/main/java/com/fs/course/param/FsUserCourseOrderDoPayParam.java

@@ -10,4 +10,5 @@ public class FsUserCourseOrderDoPayParam implements Serializable {
     @NotNull(message = "订单号不能为空")
     @NotNull(message = "订单号不能为空")
     Long orderId;
     Long orderId;
     Long userId;
     Long userId;
+    String appId;
 }
 }

+ 1 - 0
fs-service/src/main/java/com/fs/course/param/FsUserVipOrderPayUParam.java

@@ -11,4 +11,5 @@ public class FsUserVipOrderPayUParam implements Serializable {
    private Long userId;
    private Long userId;
    @NotNull(message = "orderId不能为空")
    @NotNull(message = "orderId不能为空")
    private Long orderId;
    private Long orderId;
+   private String appId;
 }
 }

+ 85 - 15
fs-service/src/main/java/com/fs/course/service/impl/FsCourseProductOrderServiceImpl.java

@@ -7,6 +7,8 @@ import java.util.*;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.DateUtils;
@@ -27,6 +29,7 @@ import com.fs.his.domain.*;
 import com.fs.his.dto.PayConfigDTO;
 import com.fs.his.dto.PayConfigDTO;
 import com.fs.his.enums.FsCourseProductOrderStatusEnum;
 import com.fs.his.enums.FsCourseProductOrderStatusEnum;
 import com.fs.his.mapper.FsStorePaymentMapper;
 import com.fs.his.mapper.FsStorePaymentMapper;
+import com.fs.his.mapper.FsUserWxMapper;
 import com.fs.his.param.ApplyCourseProductOrderRefundParam;
 import com.fs.his.param.ApplyCourseProductOrderRefundParam;
 import com.fs.his.param.FsCourseProductOrderComputeParam;
 import com.fs.his.param.FsCourseProductOrderComputeParam;
 import com.fs.his.param.FsCourseProductOrderDoPayParam;
 import com.fs.his.param.FsCourseProductOrderDoPayParam;
@@ -125,8 +128,11 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
 
 
     private static final int CODE_LENGTH = 12;
     private static final int CODE_LENGTH = 12;
 
 
+//    @Autowired
+//    private IFsUserWxService userWxService;
+
     @Autowired
     @Autowired
-    private IFsUserWxService userWxService;
+    private FsUserWxMapper fsUserWxMapper;
 
 
 
 
     /**
     /**
@@ -271,9 +277,40 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
             return R.error("订单状态不正确");
             return R.error("订单状态不正确");
         }
         }
         FsUser user = userService.selectFsUserByUserId(courseProductOrder.getUserId());
         FsUser user = userService.selectFsUserByUserId(courseProductOrder.getUserId());
-        FsUserWx fsUserWx = userWxService.selectByAppIdAndUserId(param.getAppId(), user.getUserId(), 1);
-        logger.info("用户微信信息==============={}",fsUserWx);
-        if (user != null && fsUserWx != null && StringUtils.isNotEmpty(fsUserWx.getOpenId())) {
+
+        String json = configService.selectConfigByKey("his.pay");
+        PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+        String openId = null;
+        String appId = param.getAppId();
+        if (StringUtils.isNotBlank(appId)) {
+            //查询fs_user_wx的openId
+            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                    .eq(FsUserWx::getFsUserId, param.getUserId())
+                    .eq(FsUserWx::getAppId, appId);
+            FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+            logger.info("用户微信信息==============={}",fsUserWx);
+            if (fsUserWx != null) {
+                openId = fsUserWx.getOpenId();
+            }
+        } else {
+            appId = payConfigDTO.getAppId();
+            openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+            if (StringUtils.isBlank(openId)){
+                Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                        .eq(FsUserWx::getFsUserId, param.getUserId())
+                        .eq(FsUserWx::getAppId, appId);
+                FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+                logger.info("用户微信信息==============={}",fsUserWx);
+                if (Objects.nonNull(fsUserWx)){
+                    openId = fsUserWx.getOpenId();
+                }
+            }
+        }
+
+//        FsUserWx fsUserWx = userWxService.selectByAppIdAndUserId(param.getAppId(), user.getUserId(), 1);
+//        logger.info("用户微信信息==============={}",fsUserWx);
+//        if (user != null && fsUserWx != null && StringUtils.isNotEmpty(fsUserWx.getOpenId())) {
+        if (user != null && StringUtils.isNotEmpty(openId)) {
             Map<String,Object> moneys= Maps.newHashMap();
             Map<String,Object> moneys= Maps.newHashMap();
             FsCourseProduct courseProduct = JSONUtil.toBean(courseProductOrder.getProductJson(), FsCourseProduct.class);
             FsCourseProduct courseProduct = JSONUtil.toBean(courseProductOrder.getProductJson(), FsCourseProduct.class);
             moneys.put("payPrice",courseProduct.getProductPrice());
             moneys.put("payPrice",courseProduct.getProductPrice());
@@ -316,12 +353,43 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
         }
         }
         FsUser user = userService.selectFsUserByUserId(param.getUserId());
         FsUser user = userService.selectFsUserByUserId(param.getUserId());
         logger.info("用户信息==============={}",user);
         logger.info("用户信息==============={}",user);
-        FsUserWx fsUserWx = userWxService.selectByAppIdAndUserId(param.getAppId(), user.getUserId(), 1);
-        logger.info("用户微信信息==============={}",fsUserWx);
-        if (user != null && fsUserWx != null && StringUtils.isNotEmpty(fsUserWx.getOpenId())) {
+
+        String json = configService.selectConfigByKey("his.pay");
+        PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+        String openId = null;
+        String appId = param.getAppId();
+        if (StringUtils.isNotBlank(appId)) {
+            //查询fs_user_wx的openId
+            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                    .eq(FsUserWx::getFsUserId, param.getUserId())
+                    .eq(FsUserWx::getAppId, appId);
+            FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+            logger.info("用户微信信息==============={}",fsUserWx);
+            if (fsUserWx != null) {
+                openId = fsUserWx.getOpenId();
+            }
+        } else {
+            appId = payConfigDTO.getAppId();
+            openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+            if (StringUtils.isBlank(openId)){
+                Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                        .eq(FsUserWx::getFsUserId, param.getUserId())
+                        .eq(FsUserWx::getAppId, appId);
+                FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+                logger.info("用户微信信息==============={}",fsUserWx);
+                if (Objects.nonNull(fsUserWx)){
+                    openId = fsUserWx.getOpenId();
+                }
+            }
+        }
+
+//        FsUserWx fsUserWx = userWxService.selectByAppIdAndUserId(param.getAppId(), user.getUserId(), 1);
+//        logger.info("用户微信信息==============={}",fsUserWx);
+//        if (user != null && fsUserWx != null && StringUtils.isNotEmpty(fsUserWx.getOpenId())) {
+        if (user != null && StringUtils.isNotEmpty(openId)) {
             if (courseProduct.getProductPrice().compareTo(new BigDecimal(0))==1) {
             if (courseProduct.getProductPrice().compareTo(new BigDecimal(0))==1) {
-                String json = configService.selectConfigByKey("his.pay");
-                PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+//                String json = configService.selectConfigByKey("his.pay");
+//                PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
                 String payCode =  OrderCodeUtils.getOrderSn();
                 String payCode =  OrderCodeUtils.getOrderSn();
                 if(StringUtils.isEmpty(payCode)){
                 if(StringUtils.isEmpty(payCode)){
                     return R.error("订单生成失败,请重试");
                     return R.error("订单生成失败,请重试");
@@ -338,7 +406,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
                 storePayment.setCompanyId(courseProductOrder.getCompanyId());
                 storePayment.setCompanyId(courseProductOrder.getCompanyId());
                 storePayment.setCompanyUserId(courseProductOrder.getCompanyUserId());
                 storePayment.setCompanyUserId(courseProductOrder.getCompanyUserId());
                 storePayment.setRemark("拍商品订单支付");
                 storePayment.setRemark("拍商品订单支付");
-                storePayment.setOpenId(fsUserWx.getOpenId());
+                storePayment.setOpenId(openId);
                 storePayment.setUserId(user.getUserId());
                 storePayment.setUserId(user.getUserId());
                 storePayment.setBusinessId(courseProductOrder.getCourseOrderId().toString());
                 storePayment.setBusinessId(courseProductOrder.getCourseOrderId().toString());
                 if (storePaymentService.insertFsStorePayment(storePayment) > 0) {
                 if (storePaymentService.insertFsStorePayment(storePayment) > 0) {
@@ -347,7 +415,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
                         WxPayConfig payConfig = new WxPayConfig();
                         WxPayConfig payConfig = new WxPayConfig();
                         SysConfig sysConfig = sysConfigMapper.selectConfigByConfigKey("his.pay");
                         SysConfig sysConfig = sysConfigMapper.selectConfigByConfigKey("his.pay");
                         FsPayConfig fsPayConfig = new Gson().fromJson(sysConfig.getConfigValue(), FsPayConfig.class);
                         FsPayConfig fsPayConfig = new Gson().fromJson(sysConfig.getConfigValue(), FsPayConfig.class);
-                        payConfig.setAppId(fsPayConfig.getAppId());
+                        payConfig.setAppId(appId);
                         payConfig.setMchId(fsPayConfig.getWxMchId());
                         payConfig.setMchId(fsPayConfig.getWxMchId());
                         payConfig.setMchKey(fsPayConfig.getWxMchKey());
                         payConfig.setMchKey(fsPayConfig.getWxMchKey());
                         payConfig.setSubAppId(org.apache.commons.lang3.StringUtils.trimToNull(null));
                         payConfig.setSubAppId(org.apache.commons.lang3.StringUtils.trimToNull(null));
@@ -356,7 +424,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
                         payConfig.setNotifyUrl(wxPayProperties.getNotifyUrl());
                         payConfig.setNotifyUrl(wxPayProperties.getNotifyUrl());
                         wxPayService.setConfig(payConfig);
                         wxPayService.setConfig(payConfig);
                         WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
                         WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
-                        orderRequest.setOpenid(fsUserWx.getOpenId());//公众号支付提供用户openid
+                        orderRequest.setOpenid(openId);//公众号支付提供用户openid
                         orderRequest.setBody("拍商品订单支付");
                         orderRequest.setBody("拍商品订单支付");
                         orderRequest.setOutTradeNo("product-" + storePayment.getPayCode());
                         orderRequest.setOutTradeNo("product-" + storePayment.getPayCode());
                         orderRequest.setTotalFee(WxPayUnifiedOrderRequest.yuanToFen(storePayment.getPayMoney().toString()));//测试
                         orderRequest.setTotalFee(WxPayUnifiedOrderRequest.yuanToFen(storePayment.getPayMoney().toString()));//测试
@@ -378,7 +446,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
                         p.setLowOrderId("product-" + storePayment.getPayCode());
                         p.setLowOrderId("product-" + storePayment.getPayCode());
                         p.setBody("拍商品订单支付");
                         p.setBody("拍商品订单支付");
                         p.setIsMinipg("1");
                         p.setIsMinipg("1");
-                        p.setOpenId(fsUserWx.getOpenId());
+                        p.setOpenId(openId);
                         p.setAttach("");
                         p.setAttach("");
                         p.setStoreid("0");
                         p.setStoreid("0");
                         CreateWxOrderResult wxOrder = payService.createWxOrder(p);
                         CreateWxOrderResult wxOrder = payService.createWxOrder(p);
@@ -408,7 +476,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
                         }
                         }
                         o.setPayerName("微信用户"+phone);
                         o.setPayerName("微信用户"+phone);
                         o.setGoodsInfo("拍商品订单支付"); // 订单信息
                         o.setGoodsInfo("拍商品订单支付"); // 订单信息
-                        o.setOpenId(fsUserWx.getOpenId());
+                        o.setOpenId(openId);
                         o.setOrderType(3);
                         o.setOrderType(3);
                         o.setOrderId(courseProductOrder.getCourseOrderId().toString());
                         o.setOrderId(courseProductOrder.getCourseOrderId().toString());
                         TzBankResult<PayCreateOrderResult> result = tzBankService.createOrder(o);
                         TzBankResult<PayCreateOrderResult> result = tzBankService.createOrder(o);
@@ -421,7 +489,8 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
                         logger.info("创建汇付订单");
                         logger.info("创建汇付订单");
                         HuiFuCreateOrder o = new HuiFuCreateOrder();
                         HuiFuCreateOrder o = new HuiFuCreateOrder();
                         o.setTradeType("T_MINIAPP");
                         o.setTradeType("T_MINIAPP");
-                        o.setOpenid(fsUserWx.getOpenId());
+                        o.setOpenid(openId);
+                        o.setAppId(appId);
                         o.setReqSeqId("product-"+storePayment.getPayCode());
                         o.setReqSeqId("product-"+storePayment.getPayCode());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setGoodsDesc("拍商品订单支付");
                         o.setGoodsDesc("拍商品订单支付");
@@ -430,6 +499,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
                         FsStorePayment mt=new FsStorePayment();
                         FsStorePayment mt=new FsStorePayment();
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setTradeNo(result.getHf_seq_id());
                         mt.setTradeNo(result.getHf_seq_id());
+                        mt.setAppId(appId);
                         storePaymentService.updateFsStorePayment(mt);
                         storePaymentService.updateFsStorePayment(mt);
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                     }
                     }

+ 63 - 6
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseOrderServiceImpl.java

@@ -377,15 +377,40 @@ public class FsUserCourseOrderServiceImpl implements IFsUserCourseOrderService
         String json = configService.selectConfigByKey("his.pay");
         String json = configService.selectConfigByKey("his.pay");
         PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
         PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
 
 
-        String openId = Objects.isNull(user) ? "" : user.getMaOpenId();
-        if (StringUtils.isBlank(openId)){
+//        String openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+//        if (StringUtils.isBlank(openId)){
+//            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+//                    .eq(FsUserWx::getFsUserId, param.getUserId())
+//                    .eq(FsUserWx::getAppId, payConfigDTO.getAppId());
+//            FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+//            if (Objects.nonNull(fsUserWx)){
+//                openId = fsUserWx.getOpenId();
+//            }
+//        }
+
+        String openId = null;
+        String appId = param.getAppId();
+        if (StringUtils.isNotBlank(appId)) {
+            //查询fs_user_wx的openId
             Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
             Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
                     .eq(FsUserWx::getFsUserId, param.getUserId())
                     .eq(FsUserWx::getFsUserId, param.getUserId())
-                    .eq(FsUserWx::getAppId, payConfigDTO.getAppId());
+                    .eq(FsUserWx::getAppId, appId);
             FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
             FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
-            if (Objects.nonNull(fsUserWx)){
+            if (fsUserWx != null) {
                 openId = fsUserWx.getOpenId();
                 openId = fsUserWx.getOpenId();
             }
             }
+        } else {
+            appId = payConfigDTO.getAppId();
+            openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+            if (StringUtils.isBlank(openId)){
+                Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                        .eq(FsUserWx::getFsUserId, param.getUserId())
+                        .eq(FsUserWx::getAppId, appId);
+                FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+                if (Objects.nonNull(fsUserWx)){
+                    openId = fsUserWx.getOpenId();
+                }
+            }
         }
         }
 
 
         if(user!=null&& StringUtils.isNotEmpty(openId)) {
         if(user!=null&& StringUtils.isNotEmpty(openId)) {
@@ -484,6 +509,7 @@ public class FsUserCourseOrderServiceImpl implements IFsUserCourseOrderService
                         HuiFuCreateOrder o = new HuiFuCreateOrder();
                         HuiFuCreateOrder o = new HuiFuCreateOrder();
                         o.setTradeType("T_MINIAPP");
                         o.setTradeType("T_MINIAPP");
                         o.setOpenid(openId);
                         o.setOpenid(openId);
+                        o.setAppId(appId);
                         o.setReqSeqId("course-" + storePayment.getPayCode());
                         o.setReqSeqId("course-" + storePayment.getPayCode());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setGoodsDesc("课程订单支付");
                         o.setGoodsDesc("课程订单支付");
@@ -491,6 +517,7 @@ public class FsUserCourseOrderServiceImpl implements IFsUserCourseOrderService
                         FsStorePayment mt = new FsStorePayment();
                         FsStorePayment mt = new FsStorePayment();
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setTradeNo(result.getHf_seq_id());
                         mt.setTradeNo(result.getHf_seq_id());
+                        mt.setAppId(appId);
                         storePaymentService.updateFsStorePayment(mt);
                         storePaymentService.updateFsStorePayment(mt);
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
 
 
@@ -521,14 +548,42 @@ public class FsUserCourseOrderServiceImpl implements IFsUserCourseOrderService
 //            }
 //            }
 //        }
 //        }
         FsUser user=fsUserMapper.selectFsUserByUserId(param.getUserId());
         FsUser user=fsUserMapper.selectFsUserByUserId(param.getUserId());
+
+        String json = configService.selectConfigByKey("his.pay");
+        PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+        String openId = null;
+        String appId = param.getAppId();
+        if (StringUtils.isNotBlank(appId)) {
+            //查询fs_user_wx的openId
+            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                    .eq(FsUserWx::getFsUserId, param.getUserId())
+                    .eq(FsUserWx::getAppId, appId);
+            FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+            if (fsUserWx != null) {
+                openId = fsUserWx.getOpenId();
+            }
+        } else {
+            appId = payConfigDTO.getAppId();
+            openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+            if (StringUtils.isBlank(openId)){
+                Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                        .eq(FsUserWx::getFsUserId, param.getUserId())
+                        .eq(FsUserWx::getAppId, appId);
+                FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+                if (Objects.nonNull(fsUserWx)){
+                    openId = fsUserWx.getOpenId();
+                }
+            }
+        }
+
         if(user!=null){
         if(user!=null){
             if(order.getPayMoney().compareTo(new BigDecimal(0))==1){
             if(order.getPayMoney().compareTo(new BigDecimal(0))==1){
                 String payCode =  OrderCodeUtils.getOrderSn();
                 String payCode =  OrderCodeUtils.getOrderSn();
                 if(StringUtils.isEmpty(payCode)){
                 if(StringUtils.isEmpty(payCode)){
                     return R.error("订单生成失败,请重试");
                     return R.error("订单生成失败,请重试");
                 }
                 }
-                String json = configService.selectConfigByKey("his.pay");
-                PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+//                String json = configService.selectConfigByKey("his.pay");
+//                PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
                 FsStorePayment storePayment=new FsStorePayment();
                 FsStorePayment storePayment=new FsStorePayment();
                 storePayment.setStatus(0);
                 storePayment.setStatus(0);
                 storePayment.setPayMode(payConfigDTO.getType());
                 storePayment.setPayMode(payConfigDTO.getType());
@@ -574,10 +629,12 @@ public class FsUserCourseOrderServiceImpl implements IFsUserCourseOrderService
                         o.setReqSeqId("course-"+storePayment.getPayCode());
                         o.setReqSeqId("course-"+storePayment.getPayCode());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setGoodsDesc("课程订单支付");
                         o.setGoodsDesc("课程订单支付");
+                        o.setAppId(appId);
                         HuifuCreateOrderResult result = huiFuService.createOrder(o);
                         HuifuCreateOrderResult result = huiFuService.createOrder(o);
                         FsStorePayment mt=new FsStorePayment();
                         FsStorePayment mt=new FsStorePayment();
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setTradeNo(result.getHf_seq_id());
                         mt.setTradeNo(result.getHf_seq_id());
+                        mt.setAppId(appId);
                         storePaymentService.updateFsStorePayment(mt);
                         storePaymentService.updateFsStorePayment(mt);
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                     }
                     }

+ 63 - 6
fs-service/src/main/java/com/fs/course/service/impl/FsUserVipOrderServiceImpl.java

@@ -236,15 +236,39 @@ public class FsUserVipOrderServiceImpl implements IFsUserVipOrderService
         String json = configService.selectConfigByKey("his.pay");
         String json = configService.selectConfigByKey("his.pay");
         PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
         PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
 
 
-        String openId = Objects.isNull(user) ? "" : user.getMaOpenId();
-        if (StringUtils.isBlank(openId)){
+//        String openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+//        if (StringUtils.isBlank(openId)){
+//            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+//                    .eq(FsUserWx::getFsUserId, param.getUserId())
+//                    .eq(FsUserWx::getAppId, payConfigDTO.getAppId());
+//            FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+//            if (Objects.nonNull(fsUserWx)){
+//                openId = fsUserWx.getOpenId();
+//            }
+//        }
+        String openId = null;
+        String appId = param.getAppId();
+        if (StringUtils.isNotBlank(appId)) {
+            //查询fs_user_wx的openId
             Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
             Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
                     .eq(FsUserWx::getFsUserId, param.getUserId())
                     .eq(FsUserWx::getFsUserId, param.getUserId())
-                    .eq(FsUserWx::getAppId, payConfigDTO.getAppId());
+                    .eq(FsUserWx::getAppId, appId);
             FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
             FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
-            if (Objects.nonNull(fsUserWx)){
+            if (fsUserWx != null) {
                 openId = fsUserWx.getOpenId();
                 openId = fsUserWx.getOpenId();
             }
             }
+        } else {
+            appId = payConfigDTO.getAppId();
+            openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+            if (StringUtils.isBlank(openId)){
+                Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                        .eq(FsUserWx::getFsUserId, param.getUserId())
+                        .eq(FsUserWx::getAppId, appId);
+                FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+                if (Objects.nonNull(fsUserWx)){
+                    openId = fsUserWx.getOpenId();
+                }
+            }
         }
         }
 
 
         if(user!=null&& StringUtils.isNotEmpty(openId)) {
         if(user!=null&& StringUtils.isNotEmpty(openId)) {
@@ -343,6 +367,7 @@ public class FsUserVipOrderServiceImpl implements IFsUserVipOrderService
                         HuiFuCreateOrder o = new HuiFuCreateOrder();
                         HuiFuCreateOrder o = new HuiFuCreateOrder();
                         o.setTradeType("T_MINIAPP");
                         o.setTradeType("T_MINIAPP");
                         o.setOpenid(openId);
                         o.setOpenid(openId);
+                        o.setAppId(appId);
                         o.setReqSeqId("appvip-" + storePayment.getPayCode());
                         o.setReqSeqId("appvip-" + storePayment.getPayCode());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setGoodsDesc("会员开通订单支付");
                         o.setGoodsDesc("会员开通订单支付");
@@ -350,6 +375,7 @@ public class FsUserVipOrderServiceImpl implements IFsUserVipOrderService
                         FsStorePayment mt = new FsStorePayment();
                         FsStorePayment mt = new FsStorePayment();
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setTradeNo(result.getHf_seq_id());
                         mt.setTradeNo(result.getHf_seq_id());
+                        mt.setAppId(appId);
                         storePaymentService.updateFsStorePayment(mt);
                         storePaymentService.updateFsStorePayment(mt);
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                     }
                     }
@@ -371,14 +397,43 @@ public class FsUserVipOrderServiceImpl implements IFsUserVipOrderService
             return R.error("非法操作");
             return R.error("非法操作");
         }
         }
         FsUser user = userMapper.selectFsUserByUserId(param.getUserId());
         FsUser user = userMapper.selectFsUserByUserId(param.getUserId());
+
+        String json = configService.selectConfigByKey("his.pay");
+        PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+
+        String openId = null;
+        String appId = param.getAppId();
+        if (StringUtils.isNotBlank(appId)) {
+            //查询fs_user_wx的openId
+            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                    .eq(FsUserWx::getFsUserId, param.getUserId())
+                    .eq(FsUserWx::getAppId, appId);
+            FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+            if (fsUserWx != null) {
+                openId = fsUserWx.getOpenId();
+            }
+        } else {
+            appId = payConfigDTO.getAppId();
+            openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+            if (StringUtils.isBlank(openId)){
+                Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                        .eq(FsUserWx::getFsUserId, param.getUserId())
+                        .eq(FsUserWx::getAppId, appId);
+                FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+                if (Objects.nonNull(fsUserWx)){
+                    openId = fsUserWx.getOpenId();
+                }
+            }
+        }
+
         if(user!=null){
         if(user!=null){
             if(order.getPayMoney().compareTo(new BigDecimal(0))==1){
             if(order.getPayMoney().compareTo(new BigDecimal(0))==1){
                 String payCode =  OrderCodeUtils.getOrderSn();
                 String payCode =  OrderCodeUtils.getOrderSn();
                 if(StringUtils.isEmpty(payCode)){
                 if(StringUtils.isEmpty(payCode)){
                     return R.error("订单生成失败,请重试");
                     return R.error("订单生成失败,请重试");
                 }
                 }
-                String json = configService.selectConfigByKey("his.pay");
-                PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+//                String json = configService.selectConfigByKey("his.pay");
+//                PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
                 FsStorePayment storePayment=new FsStorePayment();
                 FsStorePayment storePayment=new FsStorePayment();
                 storePayment.setStatus(0);
                 storePayment.setStatus(0);
                 storePayment.setPayMode(payConfigDTO.getType());
                 storePayment.setPayMode(payConfigDTO.getType());
@@ -421,6 +476,7 @@ public class FsUserVipOrderServiceImpl implements IFsUserVipOrderService
                         HuiFuCreateOrder o = new HuiFuCreateOrder();
                         HuiFuCreateOrder o = new HuiFuCreateOrder();
                         o.setTradeType("A_NATIVE");
                         o.setTradeType("A_NATIVE");
 //                        o.setOpenid(user.getMaOpenId());
 //                        o.setOpenid(user.getMaOpenId());
+                        o.setAppId(appId);
                         o.setReqSeqId("appvip-"+storePayment.getPayCode());
                         o.setReqSeqId("appvip-"+storePayment.getPayCode());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setGoodsDesc("会员开通订单支付");
                         o.setGoodsDesc("会员开通订单支付");
@@ -428,6 +484,7 @@ public class FsUserVipOrderServiceImpl implements IFsUserVipOrderService
                         FsStorePayment mt=new FsStorePayment();
                         FsStorePayment mt=new FsStorePayment();
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setTradeNo(result.getHf_seq_id());
                         mt.setTradeNo(result.getHf_seq_id());
+                        mt.setAppId(appId);
                         storePaymentService.updateFsStorePayment(mt);
                         storePaymentService.updateFsStorePayment(mt);
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                     }
                     }

+ 4 - 0
fs-service/src/main/java/com/fs/erp/dto/sdk/wangdian/api/WdtClient.java

@@ -26,6 +26,9 @@ public class WdtClient {
 	ConfigUtil configUtil;
 	ConfigUtil configUtil;
 
 
 
 
+	private String getWarehouseNo() {
+		return configUtil.getErpConfig().getErpWarehouseCode();
+	}
 
 
 	private String getAppKey() {
 	private String getAppKey() {
 		return configUtil.getSysConfig().getErpWdAppKey();
 		return configUtil.getSysConfig().getErpWdAppKey();
@@ -135,6 +138,7 @@ public class WdtClient {
 		log.info("开始执行请求,相对路径:{},请求参数:{}", relativeUrl, params);
 		log.info("开始执行请求,相对路径:{},请求参数:{}", relativeUrl, params);
 
 
 
 
+		params.put("warehouse_no", getWarehouseNo());
 		params.put("appkey", appkey);
 		params.put("appkey", appkey);
 		params.put("sid", sid);
 		params.put("sid", sid);
 		params.put("timestamp", Long.toString(System.currentTimeMillis()/1000));
 		params.put("timestamp", Long.toString(System.currentTimeMillis()/1000));

+ 2 - 2
fs-service/src/main/java/com/fs/erp/service/impl/WdtErpGoodsServiceImpl.java

@@ -99,8 +99,8 @@ public class WdtErpGoodsServiceImpl implements IErpGoodsService {
                 for (ErpWdtStockDTO stock : stocks) {
                 for (ErpWdtStockDTO stock : stocks) {
                     ErpGoodsStock erpGoodsStock = new ErpGoodsStock();
                     ErpGoodsStock erpGoodsStock = new ErpGoodsStock();
                     erpGoodsStock.setBarcode(barcode);
                     erpGoodsStock.setBarcode(barcode);
-                    erpGoodsStock.setQty(stock.getStock_num());
-                    erpGoodsStock.setSalable_qty(stock.getAvaliable_num());
+                    erpGoodsStock.setQty(stock.getStock_num().split("\\.")[0]); //999979.0000
+                    erpGoodsStock.setSalable_qty(stock.getAvaliable_num().split("\\.")[0]); //999976.0000
                     list.add(erpGoodsStock);
                     list.add(erpGoodsStock);
                 }
                 }
             } else {
             } else {

+ 14 - 0
fs-service/src/main/java/com/fs/his/domain/FsStorePayment.java

@@ -97,6 +97,10 @@ public class FsStorePayment extends BaseEntity
     private Integer isShare;
     private Integer isShare;
 
 
 
 
+    //小程序appId
+    private String appId;
+
+
     public Integer getIsShare() {
     public Integer getIsShare() {
         return isShare;
         return isShare;
     }
     }
@@ -307,6 +311,15 @@ public class FsStorePayment extends BaseEntity
         return storeId;
         return storeId;
     }
     }
 
 
+
+    public String getAppId() {
+        return appId;
+    }
+
+    public void setAppId(String appId) {
+        this.appId = appId;
+    }
+
     @Override
     @Override
     public String toString() {
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
@@ -328,6 +341,7 @@ public class FsStorePayment extends BaseEntity
             .append("refundMoney", getRefundMoney())
             .append("refundMoney", getRefundMoney())
             .append("refundTime", getRefundTime())
             .append("refundTime", getRefundTime())
             .append("storeId", getStoreId())
             .append("storeId", getStoreId())
+            .append("appId", getAppId())
             .toString();
             .toString();
     }
     }
 }
 }

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

@@ -97,6 +97,7 @@ public interface FsStorePaymentMapper
             "            <if test=\"maps.refundEndTime != null \">  and DATE(sp.refund_time) &lt;= DATE(#{maps.refundEndTime})</if>\n" +
             "            <if test=\"maps.refundEndTime != null \">  and DATE(sp.refund_time) &lt;= DATE(#{maps.refundEndTime})</if>\n" +
             "            <if test=\"maps.payBeginTime != null \">  and DATE(sp.pay_time) &gt;= DATE(#{maps.payBeginTime})</if>\n" +
             "            <if test=\"maps.payBeginTime != null \">  and DATE(sp.pay_time) &gt;= DATE(#{maps.payBeginTime})</if>\n" +
             "            <if test=\"maps.payEndTime != null \">  and DATE(sp.pay_time) &lt;= DATE(#{maps.payEndTime})</if>\n" +
             "            <if test=\"maps.payEndTime != null \">  and DATE(sp.pay_time) &lt;= DATE(#{maps.payEndTime})</if>\n" +
+            "            <if test=\"maps.appId != null and maps.appId != ''\">  and sp.app_id like #{maps.appId}</if>\n" +
             " ORDER BY payment_id desc  "+
             " ORDER BY payment_id desc  "+
             "</script>"})
             "</script>"})
     List<FsStorePaymentVO> selectFsStorePaymentListVO(@Param("maps")FsStorePaymentParam fsStorePayment);
     List<FsStorePaymentVO> selectFsStorePaymentListVO(@Param("maps")FsStorePaymentParam fsStorePayment);

+ 2 - 0
fs-service/src/main/java/com/fs/his/param/FsStorePaymentParam.java

@@ -116,4 +116,6 @@ public class FsStorePaymentParam extends BaseEntity {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
     private Date createTime;
 
 
+    private String appId;
+
 }
 }

+ 104 - 10
fs-service/src/main/java/com/fs/his/service/impl/FsPackageOrderServiceImpl.java

@@ -1024,6 +1024,8 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                         FsStorePayment mt=new FsStorePayment();
                         FsStorePayment mt=new FsStorePayment();
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setTradeNo(result.getHf_seq_id());
                         mt.setTradeNo(result.getHf_seq_id());
+                        //多小程序支付 更新小程序appid
+                        mt.setAppId(appId);
                         storePaymentService.updateFsStorePayment(mt);
                         storePaymentService.updateFsStorePayment(mt);
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                     }
                     }
@@ -1107,6 +1109,31 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                 }
                 }
                 String json = configService.selectConfigByKey("his.pay");
                 String json = configService.selectConfigByKey("his.pay");
                 PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
                 PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+                String openId = null;
+                String appId = param.getAppId();
+                if (StringUtils.isNotBlank(appId)) {
+                    //查询fs_user_wx的openId
+                    Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                            .eq(FsUserWx::getFsUserId, param.getUserId())
+                            .eq(FsUserWx::getAppId, appId);
+                    FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+                    if (fsUserWx != null) {
+                        openId = fsUserWx.getOpenId();
+                    }
+                } else {
+                    appId = payConfigDTO.getAppId();
+                    openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+                    if (StringUtils.isBlank(openId)){
+                        Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                                .eq(FsUserWx::getFsUserId, param.getUserId())
+                                .eq(FsUserWx::getAppId, appId);
+                        FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+                        if (Objects.nonNull(fsUserWx)){
+                            openId = fsUserWx.getOpenId();
+                        }
+                    }
+                }
+
                 FsStorePayment storePayment=new FsStorePayment();
                 FsStorePayment storePayment=new FsStorePayment();
                 storePayment.setStatus(0);
                 storePayment.setStatus(0);
                 storePayment.setPayMode(payConfigDTO.getType());
                 storePayment.setPayMode(payConfigDTO.getType());
@@ -1155,11 +1182,14 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                         o.setReqSeqId("package-"+storePayment.getPayCode());
                         o.setReqSeqId("package-"+storePayment.getPayCode());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setGoodsDesc("套餐包订单支付");
                         o.setGoodsDesc("套餐包订单支付");
+                        o.setAppId(appId);
+                        o.setOpenid(openId);
                         HuifuCreateOrderResult result = huiFuService.createOrder(o);
                         HuifuCreateOrderResult result = huiFuService.createOrder(o);
                         logger.info("创建汇付支付:"+result);
                         logger.info("创建汇付支付:"+result);
                         FsStorePayment mt=new FsStorePayment();
                         FsStorePayment mt=new FsStorePayment();
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setTradeNo(result.getHf_seq_id());
                         mt.setTradeNo(result.getHf_seq_id());
+                        mt.setAppId(appId);
                         storePaymentService.updateFsStorePayment(mt);
                         storePaymentService.updateFsStorePayment(mt);
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                     }
                     }
@@ -1185,10 +1215,39 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
         }
         }
         //如果存在优惠券  判断优惠券是否已使用
         //如果存在优惠券  判断优惠券是否已使用
         FsUser user=userService.selectFsUserByUserId(param.getUserId());
         FsUser user=userService.selectFsUserByUserId(param.getUserId());
-        if(user!=null&& StringUtils.isNotEmpty(user.getMpOpenId())){
+
+        String json = configService.selectConfigByKey("his.pay");
+        PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+
+        String openId = null;
+        String appId = param.getAppId();
+        if (StringUtils.isNotBlank(appId)) {
+            //查询fs_user_wx的openId
+            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                    .eq(FsUserWx::getFsUserId, param.getUserId())
+                    .eq(FsUserWx::getAppId, appId);
+            FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+            if (fsUserWx != null) {
+                openId = fsUserWx.getOpenId();
+            }
+        } else {
+            appId = payConfigDTO.getAppId();
+            openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+            if (StringUtils.isBlank(openId)){
+                Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                        .eq(FsUserWx::getFsUserId, param.getUserId())
+                        .eq(FsUserWx::getAppId, appId);
+                FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+                if (Objects.nonNull(fsUserWx)){
+                    openId = fsUserWx.getOpenId();
+                }
+            }
+        }
+//        if(user!=null&& StringUtils.isNotEmpty(user.getMpOpenId())){
+        if(user!=null&& StringUtils.isNotEmpty(openId)){
             if(fsPackageOrder.getPayMoney().compareTo(new BigDecimal(0))==1){
             if(fsPackageOrder.getPayMoney().compareTo(new BigDecimal(0))==1){
-                String json = configService.selectConfigByKey("his.pay");
-                PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+//                String json = configService.selectConfigByKey("his.pay");
+//                PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
                 String payCode =  OrderCodeUtils.getOrderSn();
                 String payCode =  OrderCodeUtils.getOrderSn();
                 if(StringUtils.isEmpty(payCode)){
                 if(StringUtils.isEmpty(payCode)){
                     return R.error("订单生成失败,请重试");
                     return R.error("订单生成失败,请重试");
@@ -1205,7 +1264,7 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                 storePayment.setCompanyId(fsPackageOrder.getCompanyId());
                 storePayment.setCompanyId(fsPackageOrder.getCompanyId());
                 storePayment.setCompanyUserId(fsPackageOrder.getCompanyUserId());
                 storePayment.setCompanyUserId(fsPackageOrder.getCompanyUserId());
                 storePayment.setRemark("套餐包订单支付");
                 storePayment.setRemark("套餐包订单支付");
-                storePayment.setOpenId(user.getMpOpenId());
+                storePayment.setOpenId(openId);
                 storePayment.setUserId(user.getUserId());
                 storePayment.setUserId(user.getUserId());
                 storePayment.setStoreId(fsPackageOrder.getStoreId());
                 storePayment.setStoreId(fsPackageOrder.getStoreId());
                 storePayment.setBusinessId(fsPackageOrder.getOrderId().toString());
                 storePayment.setBusinessId(fsPackageOrder.getOrderId().toString());
@@ -1223,7 +1282,7 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                         }
                         }
                         o.setPayerName("微信用户"+phone);
                         o.setPayerName("微信用户"+phone);
                         o.setGoodsInfo("套餐包订单支付"); // 订单信息
                         o.setGoodsInfo("套餐包订单支付"); // 订单信息
-                        o.setOpenId(user.getMpOpenId());
+                        o.setOpenId(openId);
                         o.setOrderType(3);
                         o.setOrderType(3);
                         o.setOrderId(fsPackageOrder.getOrderId().toString());
                         o.setOrderId(fsPackageOrder.getOrderId().toString());
                         o.setPayType(Arrays.asList(PayType.WECHAT_PUBLIC_ACCOUNT.getCode()));
                         o.setPayType(Arrays.asList(PayType.WECHAT_PUBLIC_ACCOUNT.getCode()));
@@ -1237,7 +1296,8 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                         logger.info("创建汇付订单");
                         logger.info("创建汇付订单");
                         HuiFuCreateOrder o = new HuiFuCreateOrder();
                         HuiFuCreateOrder o = new HuiFuCreateOrder();
                         o.setTradeType("T_JSAPI");
                         o.setTradeType("T_JSAPI");
-                        o.setOpenid(user.getMpOpenId());
+                        o.setOpenid(openId);
+                        o.setAppId(appId);
                         o.setReqSeqId("package-"+storePayment.getPayCode());
                         o.setReqSeqId("package-"+storePayment.getPayCode());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setGoodsDesc("套餐包订单支付");
                         o.setGoodsDesc("套餐包订单支付");
@@ -1246,6 +1306,7 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                         FsStorePayment mt=new FsStorePayment();
                         FsStorePayment mt=new FsStorePayment();
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setTradeNo(result.getHf_seq_id());
                         mt.setTradeNo(result.getHf_seq_id());
+                        mt.setAppId(appId);
                         storePaymentService.updateFsStorePayment(mt);
                         storePaymentService.updateFsStorePayment(mt);
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                     }
                     }
@@ -1272,14 +1333,44 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
         }
         }
         //如果存在优惠券  判断优惠券是否已使用
         //如果存在优惠券  判断优惠券是否已使用
         FsUser user=userService.selectFsUserByUserId(param.getUserId());
         FsUser user=userService.selectFsUserByUserId(param.getUserId());
+
+        String json = configService.selectConfigByKey("his.pay");
+        PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+
+        //金牛多小程序支付
+        String openId = null;
+        String appId = param.getAppId();
+        if (StringUtils.isNotBlank(appId)) {
+            //查询fs_user_wx的openId
+            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                    .eq(FsUserWx::getFsUserId, param.getUserId())
+                    .eq(FsUserWx::getAppId, appId);
+            FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+            if (fsUserWx != null) {
+                openId = fsUserWx.getOpenId();
+            }
+        } else {
+            appId = payConfigDTO.getAppId();
+            openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+            if (StringUtils.isBlank(openId)){
+                Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                        .eq(FsUserWx::getFsUserId, param.getUserId())
+                        .eq(FsUserWx::getAppId, appId);
+                FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+                if (Objects.nonNull(fsUserWx)){
+                    openId = fsUserWx.getOpenId();
+                }
+            }
+        }
+
         if(user!=null){
         if(user!=null){
             if(fsPackageOrder.getPayMoney().compareTo(new BigDecimal(0))==1){
             if(fsPackageOrder.getPayMoney().compareTo(new BigDecimal(0))==1){
                 String payCode =  OrderCodeUtils.getOrderSn();
                 String payCode =  OrderCodeUtils.getOrderSn();
                 if(StringUtils.isEmpty(payCode)){
                 if(StringUtils.isEmpty(payCode)){
                     return R.error("订单生成失败,请重试");
                     return R.error("订单生成失败,请重试");
                 }
                 }
-                String json = configService.selectConfigByKey("his.pay");
-                PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+//                String json = configService.selectConfigByKey("his.pay");
+//                PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
                 FsStorePayment storePayment=new FsStorePayment();
                 FsStorePayment storePayment=new FsStorePayment();
                 storePayment.setStatus(0);
                 storePayment.setStatus(0);
                 storePayment.setPayMode(payConfigDTO.getType());
                 storePayment.setPayMode(payConfigDTO.getType());
@@ -1292,7 +1383,7 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                 storePayment.setCompanyId(fsPackageOrder.getCompanyId());
                 storePayment.setCompanyId(fsPackageOrder.getCompanyId());
                 storePayment.setCompanyUserId(fsPackageOrder.getCompanyUserId());
                 storePayment.setCompanyUserId(fsPackageOrder.getCompanyUserId());
                 storePayment.setRemark("套餐包订单支付");
                 storePayment.setRemark("套餐包订单支付");
-                storePayment.setOpenId(user.getMpOpenId());
+                storePayment.setOpenId(openId);
                 storePayment.setUserId(user.getUserId());
                 storePayment.setUserId(user.getUserId());
                 storePayment.setStoreId(fsPackageOrder.getStoreId());
                 storePayment.setStoreId(fsPackageOrder.getStoreId());
                 storePayment.setBusinessId(fsPackageOrder.getOrderId().toString());
                 storePayment.setBusinessId(fsPackageOrder.getOrderId().toString());
@@ -1311,7 +1402,7 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                         }
                         }
                         o.setPayerName("微信用户"+phone);
                         o.setPayerName("微信用户"+phone);
                         o.setGoodsInfo("套餐包订单支付"); // 订单信息
                         o.setGoodsInfo("套餐包订单支付"); // 订单信息
-                        o.setOpenId(user.getMpOpenId());
+                        o.setOpenId(openId);
                         o.setOrderType(3);
                         o.setOrderType(3);
                         o.setOrderId(fsPackageOrder.getOrderId().toString());
                         o.setOrderId(fsPackageOrder.getOrderId().toString());
                         o.setPayType(Arrays.asList(PayType.ALIPAY_BARCODE_PAYMENT.getCode()));
                         o.setPayType(Arrays.asList(PayType.ALIPAY_BARCODE_PAYMENT.getCode()));
@@ -1327,12 +1418,15 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                         o.setTradeType("A_NATIVE");
                         o.setTradeType("A_NATIVE");
                         o.setReqSeqId("package-"+storePayment.getPayCode());
                         o.setReqSeqId("package-"+storePayment.getPayCode());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setTransAmt(storePayment.getPayMoney().toString());
+                        o.setOpenid(openId);
+                        o.setAppId(appId);
                         o.setGoodsDesc("套餐包订单支付");
                         o.setGoodsDesc("套餐包订单支付");
                         HuifuCreateOrderResult result = huiFuService.createOrder(o);
                         HuifuCreateOrderResult result = huiFuService.createOrder(o);
                         logger.info("创建汇付支付:"+result);
                         logger.info("创建汇付支付:"+result);
                         FsStorePayment mt=new FsStorePayment();
                         FsStorePayment mt=new FsStorePayment();
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setTradeNo(result.getHf_seq_id());
                         mt.setTradeNo(result.getHf_seq_id());
+                        mt.setAppId(appId);
                         storePaymentService.updateFsStorePayment(mt);
                         storePaymentService.updateFsStorePayment(mt);
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                     }
                     }

+ 47 - 9
fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java

@@ -2673,18 +2673,24 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
         //在线支付
         //在线支付
         String json = configService.selectConfigByKey("his.pay");
         String json = configService.selectConfigByKey("his.pay");
         PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
         PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
-        String openId = "";
-        if (StringUtils.isNotEmpty(param.getAppId())) {
-            FsUserWx fsUserWx = userWxService.selectByAppIdAndUserId(param.getAppId(), param.getUserId(), 1);
+        String openId = null;
+        String appId = param.getAppId();
+        if (StringUtils.isNotBlank(appId)) {
+            //查询fs_user_wx的openId
+            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                    .eq(FsUserWx::getFsUserId, param.getUserId())
+                    .eq(FsUserWx::getAppId, appId);
+            FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
             if (fsUserWx != null) {
             if (fsUserWx != null) {
                 openId = fsUserWx.getOpenId();
                 openId = fsUserWx.getOpenId();
             }
             }
         } else {
         } else {
+            appId = payConfigDTO.getAppId();
             openId = Objects.isNull(user) ? "" : user.getMaOpenId();
             openId = Objects.isNull(user) ? "" : user.getMaOpenId();
             if (StringUtils.isBlank(openId)){
             if (StringUtils.isBlank(openId)){
                 Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
                 Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
                         .eq(FsUserWx::getFsUserId, param.getUserId())
                         .eq(FsUserWx::getFsUserId, param.getUserId())
-                        .eq(FsUserWx::getAppId, payConfigDTO.getAppId());
+                        .eq(FsUserWx::getAppId, appId);
                 FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
                 FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
                 if (Objects.nonNull(fsUserWx)){
                 if (Objects.nonNull(fsUserWx)){
                     openId = fsUserWx.getOpenId();
                     openId = fsUserWx.getOpenId();
@@ -2805,6 +2811,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
                         FsStorePayment mt = new FsStorePayment();
                         FsStorePayment mt = new FsStorePayment();
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setTradeNo(result.getHf_seq_id());
                         mt.setTradeNo(result.getHf_seq_id());
+                        mt.setAppId(appId);
                         storePaymentService.updateFsStorePayment(mt);
                         storePaymentService.updateFsStorePayment(mt);
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                     }
                     }
@@ -2829,7 +2836,36 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
         }
         }
 
 
         FsUser user = userService.selectFsUserByUserId(param.getUserId());
         FsUser user = userService.selectFsUserByUserId(param.getUserId());
-        if (user != null && StringUtils.isNotEmpty(user.getMaOpenId())) {
+
+        String json = configService.selectConfigByKey("his.pay");
+        PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+
+        String openId = null;
+        String appId = param.getAppId();
+        if (StringUtils.isNotBlank(appId)) {
+            //查询fs_user_wx的openId
+            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                    .eq(FsUserWx::getFsUserId, param.getUserId())
+                    .eq(FsUserWx::getAppId, appId);
+            FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+            if (fsUserWx != null) {
+                openId = fsUserWx.getOpenId();
+            }
+        } else {
+            appId = payConfigDTO.getAppId();
+            openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+            if (StringUtils.isBlank(openId)){
+                Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                        .eq(FsUserWx::getFsUserId, param.getUserId())
+                        .eq(FsUserWx::getAppId, appId);
+                FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+                if (Objects.nonNull(fsUserWx)){
+                    openId = fsUserWx.getOpenId();
+                }
+            }
+        }
+
+        if (user != null && StringUtils.isNotEmpty(openId)) {
 
 
             if (order.getPayMoney().compareTo(new BigDecimal(0)) == 0) {
             if (order.getPayMoney().compareTo(new BigDecimal(0)) == 0) {
                 IFsStoreOrderService fsStoreOrderService1 = (IFsStoreOrderService) AopContext.currentProxy();
                 IFsStoreOrderService fsStoreOrderService1 = (IFsStoreOrderService) AopContext.currentProxy();
@@ -2841,8 +2877,8 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
                 if (StringUtils.isEmpty(payCode)) {
                 if (StringUtils.isEmpty(payCode)) {
                     return R.error("订单生成失败,请重试");
                     return R.error("订单生成失败,请重试");
                 }
                 }
-                String json = configService.selectConfigByKey("his.pay");
-                PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+//                String json = configService.selectConfigByKey("his.pay");
+//                PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
                 FsStorePayment storePayment = new FsStorePayment();
                 FsStorePayment storePayment = new FsStorePayment();
                 storePayment.setStatus(0);
                 storePayment.setStatus(0);
                 storePayment.setPayCode(payCode);
                 storePayment.setPayCode(payCode);
@@ -2853,7 +2889,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
                 storePayment.setPayTypeCode("alipay");
                 storePayment.setPayTypeCode("alipay");
                 storePayment.setBusinessType(2);
                 storePayment.setBusinessType(2);
                 storePayment.setRemark("药品订单支付");
                 storePayment.setRemark("药品订单支付");
-                storePayment.setOpenId(user.getMaOpenId());
+                storePayment.setOpenId(openId);
                 storePayment.setUserId(user.getUserId());
                 storePayment.setUserId(user.getUserId());
                 storePayment.setCompanyId(order.getCompanyId());
                 storePayment.setCompanyId(order.getCompanyId());
                 storePayment.setCompanyUserId(order.getCompanyUserId());
                 storePayment.setCompanyUserId(order.getCompanyUserId());
@@ -2885,7 +2921,8 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
                     } else if (payConfigDTO.getType().equals("hf")) {
                     } else if (payConfigDTO.getType().equals("hf")) {
                         HuiFuCreateOrder o = new HuiFuCreateOrder();
                         HuiFuCreateOrder o = new HuiFuCreateOrder();
                         o.setTradeType("A_NATIVE");
                         o.setTradeType("A_NATIVE");
-                        o.setOpenid(user.getMaOpenId());
+                        o.setOpenid(openId);
+                        o.setAppId(appId);
                         o.setReqSeqId("store-" + storePayment.getPayCode());
                         o.setReqSeqId("store-" + storePayment.getPayCode());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setGoodsDesc("药品订单支付");
                         o.setGoodsDesc("药品订单支付");
@@ -2893,6 +2930,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
                         FsStorePayment mt = new FsStorePayment();
                         FsStorePayment mt = new FsStorePayment();
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setPaymentId(storePayment.getPaymentId());
                         mt.setTradeNo(result.getHf_seq_id());
                         mt.setTradeNo(result.getHf_seq_id());
+                        mt.setAppId(appId);
                         storePaymentService.updateFsStorePayment(mt);
                         storePaymentService.updateFsStorePayment(mt);
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                         return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
                     }
                     }

+ 32 - 2
fs-service/src/main/java/com/fs/his/service/impl/FsStorePaymentServiceImpl.java

@@ -1226,6 +1226,34 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
         if (user==null){
         if (user==null){
             return R.error("用户不存在!");
             return R.error("用户不存在!");
         }
         }
+
+        String json = configService.selectConfigByKey("his.pay");
+        PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+        String openId = null;
+        String appId = param.getAppId();
+        if (StringUtils.isNotBlank(appId)) {
+            //查询fs_user_wx的openId
+            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                    .eq(FsUserWx::getFsUserId, param.getUserId())
+                    .eq(FsUserWx::getAppId, appId);
+            FsUserWx fsUserWx = userWxMapper.selectOne(queryWrapper);
+            if (fsUserWx != null) {
+                openId = fsUserWx.getOpenId();
+            }
+        } else {
+            appId = payConfigDTO.getAppId();
+            openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+            if (StringUtils.isBlank(openId)){
+                Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                        .eq(FsUserWx::getFsUserId, param.getUserId())
+                        .eq(FsUserWx::getAppId, appId);
+                FsUserWx fsUserWx = userWxMapper.selectOne(queryWrapper);
+                if (Objects.nonNull(fsUserWx)){
+                    openId = fsUserWx.getOpenId();
+                }
+            }
+        }
+
         Company company = companyService.selectCompanyById(param.getCompanyId());
         Company company = companyService.selectCompanyById(param.getCompanyId());
         if (company==null || company.getStatus()==0){
         if (company==null || company.getStatus()==0){
             return R.error("服务商不存在,或已被停用!");
             return R.error("服务商不存在,或已被停用!");
@@ -1256,22 +1284,24 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
         storePayment.setPayTypeCode("weixin");
         storePayment.setPayTypeCode("weixin");
         storePayment.setBusinessType(1);
         storePayment.setBusinessType(1);
         storePayment.setRemark("商城收款订单支付");
         storePayment.setRemark("商城收款订单支付");
-        storePayment.setOpenId(user.getMaOpenId());
+        storePayment.setOpenId(openId);
         storePayment.setUserId(user.getUserId());
         storePayment.setUserId(user.getUserId());
         fsStorePaymentMapper.insertFsStorePayment(storePayment);
         fsStorePaymentMapper.insertFsStorePayment(storePayment);
 
 
         //汇付支付
         //汇付支付
         HuiFuCreateOrder o = new HuiFuCreateOrder();
         HuiFuCreateOrder o = new HuiFuCreateOrder();
         o.setTradeType("T_MINIAPP");
         o.setTradeType("T_MINIAPP");
-        o.setOpenid(user.getMaOpenId());
+        o.setOpenid(openId);
         o.setReqSeqId("payment-"+storePayment.getPayCode());
         o.setReqSeqId("payment-"+storePayment.getPayCode());
         o.setTransAmt(storePayment.getPayMoney().toString());
         o.setTransAmt(storePayment.getPayMoney().toString());
         o.setGoodsDesc("商城订单支付");
         o.setGoodsDesc("商城订单支付");
+        o.setAppId(appId);
         HuifuCreateOrderResult result = huiFuService.createOrder(o);
         HuifuCreateOrderResult result = huiFuService.createOrder(o);
         if(result.getResp_code()!=null&&(result.getResp_code().equals("00000000")||result.getResp_code().equals("00000100"))){
         if(result.getResp_code()!=null&&(result.getResp_code().equals("00000000")||result.getResp_code().equals("00000100"))){
             FsStorePayment mt=new FsStorePayment();
             FsStorePayment mt=new FsStorePayment();
             mt.setPaymentId(storePayment.getPaymentId());
             mt.setPaymentId(storePayment.getPaymentId());
             mt.setTradeNo(result.getHf_seq_id());
             mt.setTradeNo(result.getHf_seq_id());
+            mt.setAppId(appId);
             fsStorePaymentMapper.updateFsStorePayment(mt);
             fsStorePaymentMapper.updateFsStorePayment(mt);
             Map<String, Object> resultMap = com.alibaba.fastjson.JSON.parseObject(result.getPay_info(), new TypeReference<Map<String, Object>>() {});
             Map<String, Object> resultMap = com.alibaba.fastjson.JSON.parseObject(result.getPay_info(), new TypeReference<Map<String, Object>>() {});
             String s = (String) resultMap.get("package");
             String s = (String) resultMap.get("package");

+ 6 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsUserCouponServiceImpl.java

@@ -5,11 +5,13 @@ import java.util.List;
 import com.fs.common.exception.CustomException;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.SecurityUtils;
 import com.fs.common.utils.SecurityUtils;
+import com.fs.common.utils.StringUtils;
 import com.fs.his.domain.FsCoupon;
 import com.fs.his.domain.FsCoupon;
 import com.fs.his.mapper.FsCouponMapper;
 import com.fs.his.mapper.FsCouponMapper;
 import com.fs.his.param.FsUserCouponParam;
 import com.fs.his.param.FsUserCouponParam;
 import com.fs.his.param.FsUserCouponSendParam;
 import com.fs.his.param.FsUserCouponSendParam;
 import com.fs.his.param.FsUserCouponUParam;
 import com.fs.his.param.FsUserCouponUParam;
+import com.fs.his.utils.PhoneUtil;
 import com.fs.his.vo.FsUserCouponCountUVO;
 import com.fs.his.vo.FsUserCouponCountUVO;
 import com.fs.his.vo.FsUserCouponListUVO;
 import com.fs.his.vo.FsUserCouponListUVO;
 import com.fs.his.vo.FsUserCouponListVO;
 import com.fs.his.vo.FsUserCouponListVO;
@@ -111,6 +113,10 @@ public class FsUserCouponServiceImpl implements IFsUserCouponService
 
 
     @Override
     @Override
     public List<FsUserCouponListVO> selectFsUserCouponListVO(FsUserCouponParam fsUserCoupon) {
     public List<FsUserCouponListVO> selectFsUserCouponListVO(FsUserCouponParam fsUserCoupon) {
+        String phone = fsUserCoupon.getPhone();
+        if (StringUtils.isNotBlank(phone)){
+            fsUserCoupon.setPhone(PhoneUtil.encryptPhone(phone));
+        }
         return fsUserCouponMapper.selectFsUserCouponListVO(fsUserCoupon);
         return fsUserCouponMapper.selectFsUserCouponListVO(fsUserCoupon);
     }
     }
 
 

+ 2 - 1
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreCartScrmServiceImpl.java

@@ -232,7 +232,8 @@ public class FsStoreCartScrmServiceImpl implements IFsStoreCartScrmService
                 ErpGoodsStockQueryResponse goodsStock = goodsService.getGoodsStock(queryRequert);
                 ErpGoodsStockQueryResponse goodsStock = goodsService.getGoodsStock(queryRequert);
                 if(goodsStock != null && goodsStock.getStocks() != null && !goodsStock.getStocks().isEmpty()){
                 if(goodsStock != null && goodsStock.getStocks() != null && !goodsStock.getStocks().isEmpty()){
 
 
-                    int stocks = Double.valueOf(goodsStock.getStocks().get(0).getSalable_qty()).intValue();
+//                    int stocks = Double.valueOf(goodsStock.getStocks().get(0).getSalable_qty()).intValue();
+                    int stocks = Integer.valueOf(goodsStock.getStocks().get(0).getSalable_qty());
 
 
                     if(stocks<=0){
                     if(stocks<=0){
                         productAttrValue.setStock(0);
                         productAttrValue.setStock(0);

+ 9 - 1
fs-service/src/main/resources/mapper/his/FsStorePaymentMapper.xml

@@ -31,10 +31,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="shareCode"    column="share_code"    />
         <result property="shareCode"    column="share_code"    />
         <result property="shareMoney"    column="share_money"    />
         <result property="shareMoney"    column="share_money"    />
         <result property="isShare"    column="is_share"    />
         <result property="isShare"    column="is_share"    />
+        <result property="appId"    column="app_id"    />
     </resultMap>
     </resultMap>
 
 
     <sql id="selectFsStorePaymentVo">
     <sql id="selectFsStorePaymentVo">
-        select payment_id, pay_code,is_share,share_status,share_code,share_money,business_code,pay_mode, pay_type_code,company_id,company_user_id, pay_money, pay_time, create_time, trade_no, user_id, open_id, business_type, business_id, status, remark, bank_transaction_id, bank_serial_no, refund_money, refund_time, store_id from fs_store_payment
+        select payment_id, pay_code,is_share,share_status,share_code,share_money,business_code,pay_mode, pay_type_code,company_id,company_user_id, pay_money, pay_time, create_time, trade_no, user_id, open_id, business_type, business_id, status, remark, bank_transaction_id, bank_serial_no, refund_money, refund_time, store_id,app_id from fs_store_payment
     </sql>
     </sql>
 
 
     <select id="selectFsStorePaymentList" parameterType="FsStorePayment" resultMap="FsStorePaymentResult">
     <select id="selectFsStorePaymentList" parameterType="FsStorePayment" resultMap="FsStorePaymentResult">
@@ -56,6 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="refundTime != null "> and refund_time = #{refundTime}</if>
             <if test="refundTime != null "> and refund_time = #{refundTime}</if>
             <if test="storeId != null "> and store_id = #{storeId}</if>
             <if test="storeId != null "> and store_id = #{storeId}</if>
             <if test="businessCode != null "> and business_code = #{businessCode}</if>
             <if test="businessCode != null "> and business_code = #{businessCode}</if>
+            <if test="appId != null and appId !=''"> and app_id = #{appId}</if>
         </where>
         </where>
     </select>
     </select>
 
 
@@ -92,6 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="shareCode != null">share_code,</if>
             <if test="shareCode != null">share_code,</if>
             <if test="shareMoney != null">share_money,</if>
             <if test="shareMoney != null">share_money,</if>
             <if test="isShare != null">is_share,</if>
             <if test="isShare != null">is_share,</if>
+            <if test="appId != null">app_id,</if>
          </trim>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="payCode != null">#{payCode},</if>
             <if test="payCode != null">#{payCode},</if>
@@ -119,6 +122,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="shareCode != null">#{shareCode},</if>
             <if test="shareCode != null">#{shareCode},</if>
             <if test="shareMoney != null">#{shareMoney},</if>
             <if test="shareMoney != null">#{shareMoney},</if>
             <if test="isShare != null">#{isShare},</if>
             <if test="isShare != null">#{isShare},</if>
+            <if test="appId != null">#{appId},</if>
          </trim>
          </trim>
     </insert>
     </insert>
 
 
@@ -150,6 +154,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="shareCode != null">share_code = #{shareCode},</if>
             <if test="shareCode != null">share_code = #{shareCode},</if>
             <if test="shareMoney != null">share_money = #{shareMoney},</if>
             <if test="shareMoney != null">share_money = #{shareMoney},</if>
             <if test="isShare != null">is_share = #{isShare},</if>
             <if test="isShare != null">is_share = #{isShare},</if>
+            <if test="appId != null">app_id = #{appId},</if>
         </trim>
         </trim>
         where payment_id = #{paymentId}
         where payment_id = #{paymentId}
     </update>
     </update>
@@ -260,6 +265,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="maps.payEndTime != null ">
         <if test="maps.payEndTime != null ">
             and DATE(sp.pay_time) &lt;= DATE(#{maps.payEndTime})
             and DATE(sp.pay_time) &lt;= DATE(#{maps.payEndTime})
         </if>
         </if>
+        <if test="maps.appId != null and maps.appId != '' ">
+            and sp.app_id like #{maps.appId}
+        </if>
     </select>
     </select>
     <select id="selectLastByBusinessCode" resultType="com.fs.his.domain.FsStorePayment">
     <select id="selectLastByBusinessCode" resultType="com.fs.his.domain.FsStorePayment">
         select * from fs_store_payment where business_code like #{orderSn} order by create_time desc limit 1
         select * from fs_store_payment where business_code like #{orderSn} order by create_time desc limit 1

+ 66 - 9
fs-user-app/src/main/java/com/fs/app/controller/InquiryOrderController.java

@@ -250,18 +250,43 @@ public class InquiryOrderController extends  AppBaseController {
         //在线支付
         //在线支付
         String json = configService.selectConfigByKey("his.pay");
         String json = configService.selectConfigByKey("his.pay");
         PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
         PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
-        String openId = "";
-        if (StringUtils.isNotEmpty(param.getAppId())) {
-            FsUserWx fsUserWx = userWxService.selectByAppIdAndUserId(param.getAppId(), param.getUserId(), 1);
+//        String openId = "";
+//        if (StringUtils.isNotEmpty(param.getAppId())) {
+//            FsUserWx fsUserWx = userWxService.selectByAppIdAndUserId(param.getAppId(), param.getUserId(), 1);
+//            if (fsUserWx != null) {
+//                openId = fsUserWx.getOpenId();
+//            }
+//        } else {
+//            openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+//            if (StringUtils.isBlank(openId)){
+//                Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+//                        .eq(FsUserWx::getFsUserId, param.getUserId())
+//                        .eq(FsUserWx::getAppId, payConfigDTO.getAppId());
+//                FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+//                if (Objects.nonNull(fsUserWx)){
+//                    openId = fsUserWx.getOpenId();
+//                }
+//            }
+//        }
+
+        String openId = null;
+        String appId = param.getAppId();
+        if (StringUtils.isNotBlank(appId)) {
+            //查询fs_user_wx的openId
+            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                    .eq(FsUserWx::getFsUserId, param.getUserId())
+                    .eq(FsUserWx::getAppId, appId);
+            FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
             if (fsUserWx != null) {
             if (fsUserWx != null) {
                 openId = fsUserWx.getOpenId();
                 openId = fsUserWx.getOpenId();
             }
             }
         } else {
         } else {
+            appId = payConfigDTO.getAppId();
             openId = Objects.isNull(user) ? "" : user.getMaOpenId();
             openId = Objects.isNull(user) ? "" : user.getMaOpenId();
             if (StringUtils.isBlank(openId)){
             if (StringUtils.isBlank(openId)){
                 Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
                 Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
                         .eq(FsUserWx::getFsUserId, param.getUserId())
                         .eq(FsUserWx::getFsUserId, param.getUserId())
-                        .eq(FsUserWx::getAppId, payConfigDTO.getAppId());
+                        .eq(FsUserWx::getAppId, appId);
                 FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
                 FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
                 if (Objects.nonNull(fsUserWx)){
                 if (Objects.nonNull(fsUserWx)){
                     openId = fsUserWx.getOpenId();
                     openId = fsUserWx.getOpenId();
@@ -320,7 +345,7 @@ public class InquiryOrderController extends  AppBaseController {
                     WxPayConfig payConfig = new WxPayConfig();
                     WxPayConfig payConfig = new WxPayConfig();
                     SysConfig sysConfig = sysConfigMapper.selectConfigByConfigKey("his.pay");
                     SysConfig sysConfig = sysConfigMapper.selectConfigByConfigKey("his.pay");
                     FsPayConfig fsPayConfig = new Gson().fromJson(sysConfig.getConfigValue(), FsPayConfig.class);
                     FsPayConfig fsPayConfig = new Gson().fromJson(sysConfig.getConfigValue(), FsPayConfig.class);
-                    payConfig.setAppId(fsPayConfig.getAppId());
+                    payConfig.setAppId(appId);
                     payConfig.setMchId(fsPayConfig.getWxMchId());
                     payConfig.setMchId(fsPayConfig.getWxMchId());
                     payConfig.setMchKey(fsPayConfig.getWxMchKey());
                     payConfig.setMchKey(fsPayConfig.getWxMchKey());
                     payConfig.setSubAppId(org.apache.commons.lang3.StringUtils.trimToNull(null));
                     payConfig.setSubAppId(org.apache.commons.lang3.StringUtils.trimToNull(null));
@@ -396,6 +421,7 @@ public class InquiryOrderController extends  AppBaseController {
                     HuiFuCreateOrder o = new HuiFuCreateOrder();
                     HuiFuCreateOrder o = new HuiFuCreateOrder();
                     o.setTradeType("T_MINIAPP");
                     o.setTradeType("T_MINIAPP");
                     o.setOpenid(openId);
                     o.setOpenid(openId);
+                    o.setAppId(appId);
                     o.setReqSeqId("inquiry-"+storePayment.getPayCode());
                     o.setReqSeqId("inquiry-"+storePayment.getPayCode());
                     o.setTransAmt(storePayment.getPayMoney().toString());
                     o.setTransAmt(storePayment.getPayMoney().toString());
                     o.setGoodsDesc("问诊订单支付");
                     o.setGoodsDesc("问诊订单支付");
@@ -403,6 +429,7 @@ public class InquiryOrderController extends  AppBaseController {
                     FsStorePayment mt=new FsStorePayment();
                     FsStorePayment mt=new FsStorePayment();
                     mt.setPaymentId(storePayment.getPaymentId());
                     mt.setPaymentId(storePayment.getPaymentId());
                     mt.setTradeNo(result.getHf_seq_id());
                     mt.setTradeNo(result.getHf_seq_id());
+                    mt.setAppId(appId);
                     storePaymentService.updateFsStorePayment(mt);
                     storePaymentService.updateFsStorePayment(mt);
                     return R.ok().put("isPay",0).put("data",result).put("type","hf");
                     return R.ok().put("isPay",0).put("data",result).put("type","hf");
                 }
                 }
@@ -424,6 +451,34 @@ public class InquiryOrderController extends  AppBaseController {
         FsInquiryOrder order=inquiryOrderService.selectFsInquiryOrderByOrderId(param.getOrderId());
         FsInquiryOrder order=inquiryOrderService.selectFsInquiryOrderByOrderId(param.getOrderId());
         FsUser user=userService.selectFsUserByUserId(Long.parseLong(getUserId()));
         FsUser user=userService.selectFsUserByUserId(Long.parseLong(getUserId()));
 
 
+        String json = configService.selectConfigByKey("his.pay");
+        PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+
+        String openId = null;
+        String appId = param.getAppId();
+        if (StringUtils.isNotBlank(appId)) {
+            //查询fs_user_wx的openId
+            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                    .eq(FsUserWx::getFsUserId, param.getUserId())
+                    .eq(FsUserWx::getAppId, appId);
+            FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+            if (fsUserWx != null) {
+                openId = fsUserWx.getOpenId();
+            }
+        } else {
+            appId = payConfigDTO.getAppId();
+            openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+            if (StringUtils.isBlank(openId)){
+                Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                        .eq(FsUserWx::getFsUserId, param.getUserId())
+                        .eq(FsUserWx::getAppId, appId);
+                FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+                if (Objects.nonNull(fsUserWx)){
+                    openId = fsUserWx.getOpenId();
+                }
+            }
+        }
+
         if(order.getPayMoney().compareTo(new BigDecimal(0))==0){
         if(order.getPayMoney().compareTo(new BigDecimal(0))==0){
             inquiryOrderService.payConfirm(order.getOrderSn(),"","","",2,null,null);
             inquiryOrderService.payConfirm(order.getOrderSn(),"","","",2,null,null);
             return R.ok().put("isPay",1);
             return R.ok().put("isPay",1);
@@ -433,8 +488,8 @@ public class InquiryOrderController extends  AppBaseController {
             if(StringUtils.isEmpty(payCode)){
             if(StringUtils.isEmpty(payCode)){
                 return R.error("订单生成失败,请重试");
                 return R.error("订单生成失败,请重试");
             }
             }
-            String json = configService.selectConfigByKey("his.pay");
-            PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+//            String json = configService.selectConfigByKey("his.pay");
+//            PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
             FsStorePayment storePayment=new FsStorePayment();
             FsStorePayment storePayment=new FsStorePayment();
             storePayment.setStatus(0);
             storePayment.setStatus(0);
             storePayment.setPayMode(payConfigDTO.getType());
             storePayment.setPayMode(payConfigDTO.getType());
@@ -447,7 +502,7 @@ public class InquiryOrderController extends  AppBaseController {
             storePayment.setPayTypeCode("支付宝");
             storePayment.setPayTypeCode("支付宝");
             storePayment.setBusinessType(1);
             storePayment.setBusinessType(1);
             storePayment.setRemark("问诊订单支付");
             storePayment.setRemark("问诊订单支付");
-            storePayment.setOpenId(user.getMaOpenId());
+            storePayment.setOpenId(openId);
             storePayment.setUserId(user.getUserId());
             storePayment.setUserId(user.getUserId());
             storePayment.setBusinessId(order.getOrderId().toString());
             storePayment.setBusinessId(order.getOrderId().toString());
             if(storePaymentService.insertFsStorePayment(storePayment)>0){
             if(storePaymentService.insertFsStorePayment(storePayment)>0){
@@ -476,14 +531,16 @@ public class InquiryOrderController extends  AppBaseController {
                 }else if (payConfigDTO.getType().equals("hf")) {
                 }else if (payConfigDTO.getType().equals("hf")) {
                     HuiFuCreateOrder o = new HuiFuCreateOrder();
                     HuiFuCreateOrder o = new HuiFuCreateOrder();
                     o.setTradeType("A_NATIVE");
                     o.setTradeType("A_NATIVE");
-                    o.setOpenid(user.getMaOpenId());
+                    o.setOpenid(openId);
                     o.setReqSeqId("inquiry-"+storePayment.getPayCode());
                     o.setReqSeqId("inquiry-"+storePayment.getPayCode());
                     o.setTransAmt(storePayment.getPayMoney().toString());
                     o.setTransAmt(storePayment.getPayMoney().toString());
                     o.setGoodsDesc("问诊订单支付");
                     o.setGoodsDesc("问诊订单支付");
+                    o.setAppId(appId);
                     HuifuCreateOrderResult result = huiFuService.createOrder(o);
                     HuifuCreateOrderResult result = huiFuService.createOrder(o);
                     FsStorePayment mt=new FsStorePayment();
                     FsStorePayment mt=new FsStorePayment();
                     mt.setPaymentId(storePayment.getPaymentId());
                     mt.setPaymentId(storePayment.getPaymentId());
                     mt.setTradeNo(result.getHf_seq_id());
                     mt.setTradeNo(result.getHf_seq_id());
+                    mt.setAppId(appId);
                     storePaymentService.updateFsStorePayment(mt);
                     storePaymentService.updateFsStorePayment(mt);
                     return R.ok().put("isPay",0).put("data",result).put("type","hf");
                     return R.ok().put("isPay",0).put("data",result).put("type","hf");
                 }
                 }