Browse Source

Merge branch 'openIm' of http://1.14.104.71:10880/root/ylrz_his_scrm_java into openIm

# Conflicts:
#	fs-service/src/main/resources/application-druid-sxjz.yml
caoliqin 4 weeks ago
parent
commit
be6101392f
100 changed files with 1431 additions and 216 deletions
  1. 33 10
      fs-admin/src/main/java/com/fs/his/task/Task.java
  2. 29 1
      fs-admin/src/main/java/com/fs/hisStore/controller/FsStorePaymentScrmController.java
  3. 2 2
      fs-common-api/src/main/resources/application.yml
  4. 7 0
      fs-common/src/main/java/com/fs/common/enums/ImTypeEnum.java
  5. 2 2
      fs-company-app/src/main/resources/application.yml
  6. 39 0
      fs-company/src/main/java/com/fs/company/controller/common/CommonController.java
  7. 203 4
      fs-company/src/main/java/com/fs/company/controller/common/Test.java
  8. 9 0
      fs-company/src/main/java/com/fs/company/controller/company/CompanyProfileController.java
  9. 15 6
      fs-company/src/main/java/com/fs/company/controller/company/CompanyUserController.java
  10. 71 0
      fs-company/src/main/java/com/fs/company/controller/store/FsPrescribeController.java
  11. 2 1
      fs-company/src/main/resources/application.yml
  12. 4 3
      fs-doctor-app/src/main/java/com/fs/app/controller/DoctorController.java
  13. 16 10
      fs-doctor-app/src/main/java/com/fs/app/controller/DrugReportController.java
  14. 14 7
      fs-doctor-app/src/main/java/com/fs/app/controller/InquiryOrderController.java
  15. 41 1
      fs-doctor-app/src/main/java/com/fs/app/controller/PrescribeController.java
  16. 18 2
      fs-doctor-app/src/main/java/com/fs/framework/config/MyBatisConfig.java
  17. 2 2
      fs-doctor-app/src/main/resources/application.yml
  18. 2 2
      fs-doctor-app/src/main/resources/mybatis/mybatis-config.xml
  19. 3 0
      fs-service/src/main/java/com/fs/company/service/impl/CompanyServiceImpl.java
  20. 9 10
      fs-service/src/main/java/com/fs/core/utils/OrderCodeUtils.java
  21. 1 1
      fs-service/src/main/java/com/fs/erp/service/IErpOrderService.java
  22. 5 0
      fs-service/src/main/java/com/fs/erp/service/impl/DfOrderServiceImpl.java
  23. 5 0
      fs-service/src/main/java/com/fs/erp/service/impl/ErpOrderServiceImpl.java
  24. 5 0
      fs-service/src/main/java/com/fs/erp/service/impl/HzOMSErpOrderServiceImpl.java
  25. 107 0
      fs-service/src/main/java/com/fs/erp/service/impl/JSTErpOrderServiceImpl.java
  26. 5 0
      fs-service/src/main/java/com/fs/erp/service/impl/K9OrderScrmServiceImpl.java
  27. 5 0
      fs-service/src/main/java/com/fs/erp/service/impl/WdtErpOrderServiceImpl.java
  28. 1 0
      fs-service/src/main/java/com/fs/his/dto/InquiryConfigDTO.java
  29. 4 0
      fs-service/src/main/java/com/fs/his/dto/PayloadDTO.java
  30. 18 0
      fs-service/src/main/java/com/fs/his/mapper/FsPrescribeMapper.java
  31. 9 1
      fs-service/src/main/java/com/fs/his/mapper/FsStoreOrderMapper.java
  32. 27 0
      fs-service/src/main/java/com/fs/his/param/FsPrescribeListDCompanyParam.java
  33. 1 0
      fs-service/src/main/java/com/fs/his/param/FsPrescribeListDParam.java
  34. 1 0
      fs-service/src/main/java/com/fs/his/param/FsPrescribeListUParam.java
  35. 1 0
      fs-service/src/main/java/com/fs/his/param/FsPrescribeParam.java
  36. 2 0
      fs-service/src/main/java/com/fs/his/service/IFsPrescribeService.java
  37. 5 0
      fs-service/src/main/java/com/fs/his/service/IFsStoreOrderService.java
  38. 32 22
      fs-service/src/main/java/com/fs/his/service/impl/FsDoctorServiceImpl.java
  39. 3 0
      fs-service/src/main/java/com/fs/his/service/impl/FsFollowReportServiceImpl.java
  40. 38 34
      fs-service/src/main/java/com/fs/his/service/impl/FsFollowServiceImpl.java
  41. 1 1
      fs-service/src/main/java/com/fs/his/service/impl/FsInquiryOrderMsgServiceImpl.java
  42. 72 35
      fs-service/src/main/java/com/fs/his/service/impl/FsInquiryOrderServiceImpl.java
  43. 14 0
      fs-service/src/main/java/com/fs/his/service/impl/FsPrescribeServiceImpl.java
  44. 50 0
      fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java
  45. 6 4
      fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java
  46. 64 4
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreAfterSalesScrmServiceImpl.java
  47. 8 3
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreProductScrmServiceImpl.java
  48. 22 0
      fs-service/src/main/java/com/fs/im/config/ImTypeConfig.java
  49. 2 0
      fs-service/src/main/java/com/fs/im/service/OpenIMService.java
  50. 65 1
      fs-service/src/main/java/com/fs/im/service/impl/OpenIMServiceImpl.java
  51. 5 0
      fs-service/src/main/java/com/fs/qw/mapper/QwWatchLogMapper.java
  52. 1 0
      fs-service/src/main/java/com/fs/qw/param/QwWatchLogStatisticsListParam.java
  53. 9 0
      fs-service/src/main/java/com/fs/qw/service/impl/QwWatchLogServiceImpl.java
  54. 2 0
      fs-service/src/main/java/com/fs/qw/vo/QwWatchLogStatisticsListVO.java
  55. 0 1
      fs-service/src/main/resources/application-common.yml
  56. 1 1
      fs-service/src/main/resources/application-config-myhk.yml
  57. 3 0
      fs-service/src/main/resources/application-dev.yml
  58. 5 0
      fs-service/src/main/resources/application-druid-bjczwh.yml
  59. 3 0
      fs-service/src/main/resources/application-druid-bly-test.yml
  60. 3 0
      fs-service/src/main/resources/application-druid-bly.yml
  61. 5 0
      fs-service/src/main/resources/application-druid-bnkc.yml
  62. 5 0
      fs-service/src/main/resources/application-druid-drk-test.yml
  63. 6 0
      fs-service/src/main/resources/application-druid-drk.yml
  64. 4 1
      fs-service/src/main/resources/application-druid-fby.yml
  65. 8 3
      fs-service/src/main/resources/application-druid-hcl.yml
  66. 5 0
      fs-service/src/main/resources/application-druid-hdt.yml
  67. 7 2
      fs-service/src/main/resources/application-druid-hyt-test.yml
  68. 8 2
      fs-service/src/main/resources/application-druid-hyt.yml
  69. 6 0
      fs-service/src/main/resources/application-druid-hzyy.yml
  70. 9 0
      fs-service/src/main/resources/application-druid-jkj.yml
  71. 6 0
      fs-service/src/main/resources/application-druid-jnlzjk.yml
  72. 6 0
      fs-service/src/main/resources/application-druid-jnmy-test.yml
  73. 6 0
      fs-service/src/main/resources/application-druid-jnmy.yml
  74. 6 0
      fs-service/src/main/resources/application-druid-jzzx-test.yml
  75. 4 0
      fs-service/src/main/resources/application-druid-jzzx.yml
  76. 6 2
      fs-service/src/main/resources/application-druid-kyt.yml
  77. 10 2
      fs-service/src/main/resources/application-druid-lmjy-test.yml
  78. 9 2
      fs-service/src/main/resources/application-druid-lmjy.yml
  79. 6 0
      fs-service/src/main/resources/application-druid-myhk-test.yml
  80. 5 0
      fs-service/src/main/resources/application-druid-myhk.yml
  81. 6 0
      fs-service/src/main/resources/application-druid-nmgyt.yml
  82. 10 2
      fs-service/src/main/resources/application-druid-qdtst-test.yml
  83. 6 2
      fs-service/src/main/resources/application-druid-qdtst.yml
  84. 6 0
      fs-service/src/main/resources/application-druid-sft-test.yml
  85. 5 0
      fs-service/src/main/resources/application-druid-sft.yml
  86. 4 0
      fs-service/src/main/resources/application-druid-sxjz.yml
  87. 7 0
      fs-service/src/main/resources/application-druid-syysy-test.yml
  88. 4 0
      fs-service/src/main/resources/application-druid-syysy.yml
  89. 6 0
      fs-service/src/main/resources/application-druid-whhm.yml
  90. 7 2
      fs-service/src/main/resources/application-druid-xfk.yml
  91. 6 0
      fs-service/src/main/resources/application-druid-xzt.yml
  92. 8 0
      fs-service/src/main/resources/application-druid-yjb.yml
  93. 10 0
      fs-service/src/main/resources/application-druid-yzt.yml
  94. 5 0
      fs-service/src/main/resources/application-druid-zkzh-test.yml
  95. 6 0
      fs-service/src/main/resources/application-druid-zkzh.yml
  96. 10 0
      fs-service/src/main/resources/application-druid-zsjk.yml
  97. 2 0
      fs-service/src/main/resources/application-druid.yml
  98. 4 0
      fs-service/src/main/resources/mapper/course/FsUserCourseVideoMapper.xml
  99. 22 7
      fs-user-app/src/main/java/com/fs/app/controller/CompanyUserController.java
  100. 38 18
      fs-user-app/src/main/java/com/fs/app/controller/FollowController.java

+ 33 - 10
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -47,6 +47,7 @@ import com.fs.his.service.*;
 import com.fs.his.service.impl.FsPackageOrderServiceImpl;
 import com.fs.his.utils.ConfigUtil;
 import com.fs.his.vo.FsSubOrderResultVO;
+import com.fs.hisStore.domain.FsStoreOrderScrm;
 import com.fs.im.dto.*;
 import com.fs.im.service.IImService;
 import com.fs.im.service.OpenIMService;
@@ -522,12 +523,8 @@ public class Task {
         } else if (erpOrderService == wdtOrderService || erpOrderService == dfOrderService || erpOrderService == jSTOrderService){
             orders = fsStoreOrderMapper.selectWdtOmsOrderdeliveryOp();
         }
-
-
         for(FsStoreOrder order:orders){
-
             ErpOrderQueryRequert request=new ErpOrderQueryRequert();
-
             request.setCode(order.getExtendOrderId());
             if (erpOrderService != null){
                 ErpOrderQueryResponse response=erpOrderService.getOrder(request);
@@ -542,20 +539,46 @@ public class Task {
                                         redisCache.deleteObject("delivery"+":"+order.getExtendOrderId());
                                     }
                                 }
-
                             }
                         }
                     }
                 }
             }
-
         }
-
-
-
     }
 
-
+    public void deliveryOpScrm()
+    {
+        IErpOrderService erpOrderService = getErpService();
+        List<FsStoreOrderScrm> orders = null;
+        if (erpOrderService == gyOrderService){
+            orders = fsStoreOrderMapper.selectOmsOrderdeliveryOpScrm();
+        } else if (erpOrderService == wdtOrderService || erpOrderService == dfOrderService || erpOrderService == jSTOrderService){
+            orders = fsStoreOrderMapper.selectWdtOmsOrderdeliveryOpScrm();
+        }
+        for(FsStoreOrderScrm order:orders){
+            ErpOrderQueryRequert request=new ErpOrderQueryRequert();
+            request.setCode(order.getExtendOrderId());
+            if (erpOrderService != null){
+                ErpOrderQueryResponse response=erpOrderService.getScrmOrder(request);
+                if (erpOrderService != dfOrderService){
+                    if(response.getOrders()!=null&&response.getOrders().size()>0){
+                        for(ErpOrderQuery orderQuery : response.getOrders()){
+                            if(orderQuery.getDeliverys()!=null&&orderQuery.getDeliverys().size()>0){
+                                for(ErpDeliverys delivery:orderQuery.getDeliverys()){
+                                    if(delivery.getDelivery()&& StringUtils.isNotEmpty(delivery.getMail_no())){
+                                        //更新商订单状态 删除REDIS
+                                        fsStoreOrderService.deliveryOrderScrm(order.getOrderCode(),delivery.getMail_no(),delivery.getExpress_code(),delivery.getExpress_name());
+                                        redisCache.deleteObject("delivery"+":"+order.getExtendOrderId());
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
     public void getOrderDeliveryStatus()
     {
         IErpOrderService erpOrderService = getErpService();

+ 29 - 1
fs-admin/src/main/java/com/fs/hisStore/controller/FsStorePaymentScrmController.java

@@ -1,6 +1,7 @@
 package com.fs.hisStore.controller;
 
 import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
 import com.alipay.api.AlipayApiException;
 import com.alipay.api.domain.AlipayTradeRefundModel;
 import com.fs.bean.AliPayBean;
@@ -13,7 +14,12 @@ import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.ParseUtils;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.common.utils.spring.SpringUtils;
 import com.fs.company.service.ICompanyService;
+import com.fs.config.cloud.CloudHostProper;
+import com.fs.his.domain.FsHfpayConfig;
+import com.fs.his.mapper.FsHfpayConfigMapper;
+import com.fs.hisStore.domain.FsPayConfigScrm;
 import com.fs.huifuPay.domain.HuiFuQueryOrderResult;
 import com.fs.huifuPay.domain.HuiFuRefundResult;
 import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayQueryRequest;
@@ -24,6 +30,7 @@ import com.fs.hisStore.param.FsStorePaymentParam;
 import com.fs.hisStore.service.IFsStoreOrderScrmService;
 import com.fs.hisStore.service.IFsStorePaymentScrmService;
 import com.fs.hisStore.vo.FsStorePaymentVO;
+import com.fs.system.service.ISysConfigService;
 import com.ijpay.alipay.AliPayApi;
 import com.ijpay.alipay.AliPayApiConfig;
 import com.ijpay.alipay.AliPayApiConfigKit;
@@ -63,6 +70,10 @@ public class FsStorePaymentScrmController extends BaseController
     private IFsStoreOrderScrmService orderService;
     @Autowired
     HuiFuService huiFuService;
+    @Autowired
+    private CloudHostProper cloudHostProper;
+    @Autowired
+    private ISysConfigService configService;
     /**
      * 查询支付明细列表
      */
@@ -179,10 +190,27 @@ public class FsStorePaymentScrmController extends BaseController
         if(payment.getPayMoney().compareTo(fsStorePayment.getRefundMoney())==-1){
             return R.error("退款金额必须小于等于付款金额");
         }
-        if(payment.getPayTypeCode().equals("weixin")){
 
+        if(payment.getPayTypeCode().equals("weixin")){
+            String json = configService.selectConfigByKey("store.pay");
+            FsPayConfigScrm fsPayConfig = JSON.parseObject(json, FsPayConfigScrm.class);
             if (payment.getPayMode()!=null&&payment.getPayMode().equals("hf")){
+                String huifuId="";
+                FsHfpayConfigMapper fsHfpayConfigMapper = SpringUtils.getBean(FsHfpayConfigMapper.class);
+                if (payment.getAppId() != null) {
+                    FsHfpayConfig fsHfpayConfig = fsHfpayConfigMapper.selectByAppId(payment.getAppId());
+                    huifuId = fsHfpayConfig.getHuifuId();
+                } else {
+                    if (("益善缘".equals(cloudHostProper.getCompanyName()))) {
+
+                        FsHfpayConfig fsPayConfig2 = fsHfpayConfigMapper.selectByAppId("wx0d1a3dd485268521");
+                        huifuId = fsPayConfig2.getHuifuId();
+                    }else {
+                        huifuId=fsPayConfig.getHuifuId();
+                    }
+                }
                 V2TradePaymentScanpayRefundRequest request = new V2TradePaymentScanpayRefundRequest();
+                request.setHuifuId(huifuId);
                 request.setOrdAmt(payment.getPayMoney().toString());
                 request.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(payment.getCreateTime()));
                 request.setReqSeqId("refund-"+payment.getPayCode());

+ 2 - 2
fs-common-api/src/main/resources/application.yml

@@ -4,5 +4,5 @@ server:
 # Spring配置
 spring:
   profiles:
-    active: dev-yjb
-#    active: druid-jnmy
+#    active: dev
+    active: druid-myhk-test

+ 7 - 0
fs-common/src/main/java/com/fs/common/enums/ImTypeEnum.java

@@ -0,0 +1,7 @@
+package com.fs.common.enums;
+
+public enum ImTypeEnum {
+    NONE,
+    TENCENT,
+    OPENIM;
+}

+ 2 - 2
fs-company-app/src/main/resources/application.yml

@@ -5,5 +5,5 @@ server:
 # Spring配置
 spring:
   profiles:
-#    active: druid-fcky-test
-    active: dev
+    active: druid-hyt-test
+#    active: dev

+ 39 - 0
fs-company/src/main/java/com/fs/company/controller/common/CommonController.java

@@ -1,22 +1,30 @@
 package com.fs.company.controller.common;
 
+import cn.hutool.json.JSONUtil;
 import com.fs.common.config.FSConfig;
 import com.fs.common.constant.Constants;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.R;
 import com.fs.common.exception.file.OssException;
+import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.file.FileUploadUtils;
 import com.fs.common.utils.file.FileUtils;
 import com.fs.company.utils.AudioUtils;
 import com.fs.company.vo.WangUploadVO;
 import com.fs.framework.config.ServerConfig;
+import com.fs.framework.security.LoginUser;
+import com.fs.framework.service.TokenService;
 import com.fs.his.domain.FsExportTask;
+import com.fs.his.dto.InquiryConfigDTO;
 import com.fs.his.service.IFsExportTaskService;
+import com.fs.im.dto.OpenImResponseDTO;
+import com.fs.im.service.OpenIMService;
 import com.fs.qw.service.IQwWorkTaskService;
 import com.fs.qwApi.service.QwApiService;
 import com.fs.system.oss.CloudStorageService;
 import com.fs.system.oss.OSSFactory;
+import com.fs.system.service.ISysConfigService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,6 +40,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 通用请求处理
@@ -53,7 +62,14 @@ public class CommonController
     private QwApiService qwApiService;
 
 
+    @Autowired
+    private ISysConfigService configService;
+
+    @Autowired
+    private OpenIMService openIMService;
 
+    @Autowired
+    private TokenService tokenService;
 //    @Autowired
 //    private TestTwoService testService2;
 ////
@@ -276,6 +292,29 @@ public class CommonController
         }
     }
 
+    @GetMapping(value = "/common/getInquiryConfig")
+    public AjaxResult getInquiryConfig()
+    {
+        String json=configService.selectConfigByKey("his.inquiryConfig");
+        InquiryConfigDTO configDTO= JSONUtil.toBean(json, InquiryConfigDTO.class);
+        String inquirySubType = configDTO.getInquirySubType();
+        return AjaxResult.success(inquirySubType);
+    }
+
+    //分享会诊
+    @PostMapping(value = "/common/sendInquiry")
+    public AjaxResult sendInquiry(@RequestBody Map<String,String> map){
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        Long companyUserId = loginUser.getUser().getUserId();
+        Long companyId = loginUser.getCompany().getCompanyId();
+        String inquiryName = map.get("inquiryName");
+        String type = map.get("type");
+        String sendID = map.get("sendID");
+        String recvID = map.get("recvID");
+        String doctorId = map.get("doctorId");
+        OpenImResponseDTO inquirySelect = openIMService.sendInquiryUtil(sendID, recvID, 110, "inquirySelect", inquiryName, type,companyId,companyUserId,doctorId);
+        return AjaxResult.success(inquirySelect);
+    }
 
 
 }

+ 203 - 4
fs-company/src/main/java/com/fs/company/controller/common/Test.java

@@ -4,22 +4,51 @@ import com.alibaba.fastjson.JSON;
 import com.fs.ad.enums.AdUploadType;
 import com.fs.common.annotation.DataSource;
 import com.fs.common.core.domain.R;
+import com.fs.common.core.redis.RedisCache;
 import com.fs.common.enums.DataSourceType;
+import com.fs.common.service.impl.SmsServiceImpl;
+import com.fs.company.mapper.*;
 import com.fs.company.service.ICompanyService;
+import com.fs.company.service.ICompanyUserService;
 import com.fs.company.vo.RedPacketMoneyVO;
 import com.fs.course.mapper.FsCourseRedPacketLogMapper;
+import com.fs.course.service.IFsCourseWatchLogService;
+import com.fs.course.service.ITencentCloudCosService;
+import com.fs.erp.domain.ErpDeliverys;
+import com.fs.erp.domain.ErpOrderQuery;
+import com.fs.erp.dto.ErpOrderQueryRequert;
+import com.fs.erp.dto.ErpOrderQueryResponse;
 import com.fs.erp.service.IErpOrderService;
+import com.fs.fastGpt.mapper.FastGptChatSessionMapper;
+import com.fs.fastGpt.service.IFastgptEventLogTotalService;
+import com.fs.his.config.FsSysConfig;
+import com.fs.his.mapper.*;
+import com.fs.his.service.*;
+import com.fs.his.service.impl.FsPackageOrderServiceImpl;
 import com.fs.his.utils.ConfigUtil;
 import com.fs.his.utils.qrcode.QRCodeUtils;
+import com.fs.hisStore.domain.FsStoreOrderScrm;
+import com.fs.im.service.IImService;
+import com.fs.im.service.OpenIMService;
+import com.fs.qw.service.IQwAppContactWayService;
+import com.fs.qw.service.IQwCompanyService;
+import com.fs.qw.service.IQwExternalContactTransferLogService;
+import com.fs.qw.service.IQwUserService;
 import com.fs.qw.vo.AdUploadVo;
+import com.fs.qwApi.service.QwApiService;
 import com.fs.sop.service.IQwSopTempContentService;
 import com.fs.sop.service.IQwSopTempDayService;
 import com.fs.sop.service.IQwSopTempRulesService;
 import com.fs.sop.service.IQwSopTempService;
+import com.fs.system.mapper.SysConfigMapper;
 import com.google.zxing.WriterException;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.rocketmq.spring.core.RocketMQTemplate;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -40,15 +69,185 @@ public class Test {
     private FsCourseRedPacketLogMapper fsCourseRedPacketLogMapper;
     @Autowired
     private ICompanyService companyService;
+    @Autowired
+    @Qualifier("erpOrderServiceImpl")
+    private IErpOrderService gyOrderService;
+    @Autowired
+    private FsUserCouponMapper fsUserCouponMapper;
+    @Autowired
+    private SysConfigMapper sysConfigMapper;
+    @Autowired
+    private IFsPrescribeService fsPrescribeService;
+    @Autowired
+    IFsStoreOrderService fsStoreOrderService;
+    @Autowired
+    FsStoreOrderMapper fsStoreOrderMapper;
+    @Autowired
+    private RedisCache redisCache;
+    @Autowired
+    private FsPackageOrderMapper fsPackageOrderMapper;
+    @Autowired
+    private IFsFollowService fsFollowService;
+    @Autowired
+    private IFsStoreAfterSalesService fsStoreAfterSalesService;
+    //    @Autowired
+//    IErpOrderService erpOrderService;
+    @Autowired
+    FsIntegralOrderMapper integralOrderMapper;
+    @Autowired
+    IFsInquiryOrderService iFsInquiryOrderService;
+    @Autowired
+    FsPackageMapper fsPackageMapper;
+    @Autowired
+    FsStoreProductMapper fsStoreProductMapper;
+    @Autowired
+    CompanyMapper companyMapper;
+    @Autowired
+    private CompanyMoneyLogsMapper moneyLogsMapper;
+    @Autowired
+    FsUserMapper fsUserMapper;
+    @Autowired
+    IFsUserIntegralLogsService fsUserIntegralLogsService;
+    @Autowired
+    SmsServiceImpl smsService;
+    @Autowired
+    FsStoreOrderItemMapper fsStoreOrderItemMapper;
+
+    @Autowired
+    FsPatientMapper fsPatientMapper;
+    @Autowired
+    FsPrescribeDrugMapper fsPrescribeDrugMapper;
+    @Autowired
+    FsFollowMapper fsFollowMapper;
+    @Autowired
+    private IImService imService;
+    @Autowired
+    private FsInquiryOrderMapper inquiryOrderMapper;
+    @Autowired
+    private CompanyVoiceCallerMapper companyVoiceCallerMapper;
+    @Autowired
+    private CompanyVoiceLogsMapper companyVoiceLogsMapper;
+    @Autowired
+    FsPackageOrderServiceImpl packageOrderService;
+    @Autowired
+    private IFsStoreOrderLogsService fsStoreOrderLogsService;
+    org.slf4j.Logger logger= LoggerFactory.getLogger(getClass());
+    @Autowired
+    IFsDoctorService doctorService;
+    @Autowired
+    CompanyUserMapper companyUserMapper;
+    @Autowired
+    FsInquiryOrderMapper fsInquiryOrderMapper;
+    @Autowired
+    QwApiService qwApiService;
+    //每天执行一次
+    @Autowired
+    IQwAppContactWayService qwAppContactWayService;
+
+    @Autowired
+    FastGptChatSessionMapper fastGptChatSessionMapper;
+
+    @Autowired
+    IQwExternalContactTransferLogService qwExternalContactTransferLogService;
+
+
+
+    @Autowired
+    ITencentCloudCosService tencentCloudCosService;
+
+
+    @Autowired
+    public RedisTemplate redisTemplate;
+
+    @Autowired
+    @Qualifier("wdtErpOrderServiceImpl")
+    private IErpOrderService wdtOrderService;
+    @Autowired
+    @Qualifier("hzOMSErpOrderServiceImpl")
+    private IErpOrderService hzOMSErpOrderService;
+    @Autowired
+    @Qualifier("dfOrderServiceImpl")
+    private IErpOrderService dfOrderService;
 
+    @Autowired
+    @Qualifier("JSTErpOrderServiceImpl")
+    private IErpOrderService jSTOrderService;
+    @Autowired
+    @Qualifier("k9OrderScrmServiceImpl")
+    private IErpOrderService k9OrderService;
     @Autowired
     IErpOrderService erpOrderService;
     @GetMapping("test")
     public void fileDownload() {
-        System.out.println("11111111111111");
-        List<RedPacketMoneyVO> redPacketMoneyVOS = fsCourseRedPacketLogMapper.selectFsCourseRedPacketLogByCompany();
-        for (RedPacketMoneyVO redPacketMoneyVO : redPacketMoneyVOS) {
-            companyService.subtractCompanyMoney(redPacketMoneyVO.getMoney(),redPacketMoneyVO.getCompanyId());
+        deliveryOpScrm();
+    }
+    private IErpOrderService getErpService() {
+
+        FsSysConfig sysConfig = configUtil.getSysConfig();
+        Integer erpOpen = sysConfig.getErpOpen();
+        if (erpOpen != null && erpOpen == 1){
+            //判断erp类型
+            Integer erpType = sysConfig.getErpType();
+            if (erpType != null){
+                IErpOrderService erpOrderService = null;
+                if (erpType == 1){
+                    //管易
+                    erpOrderService =  gyOrderService;
+                } else if (erpType == 2){
+                    //旺店通
+                    erpOrderService =  wdtOrderService;
+                } else if (erpType == 3){
+                    //
+                    erpOrderService =  hzOMSErpOrderService;
+                } else if (erpType == 4){
+                    //代服
+                    erpOrderService =  dfOrderService;
+                }else if(erpType == 5){
+                    erpOrderService=jSTOrderService;
+                }else if(erpType == 6){
+                    erpOrderService=k9OrderService;
+                }
+                return erpOrderService;
+
+
+            }
+        }
+        return null;
+    }
+    public void deliveryOpScrm()
+    {
+        System.out.println("deliveryOpScrm");
+        IErpOrderService erpOrderService = getErpService();
+        List<FsStoreOrderScrm> orders = null;
+        if (erpOrderService == gyOrderService){
+            orders = fsStoreOrderMapper.selectOmsOrderdeliveryOpScrm();
+        } else if (erpOrderService == wdtOrderService || erpOrderService == dfOrderService || erpOrderService == jSTOrderService){
+            orders = fsStoreOrderMapper.selectWdtOmsOrderdeliveryOpScrm();
+        }
+        logger.info("查询到的"+orders.size());
+        for(FsStoreOrderScrm order:orders){
+            ErpOrderQueryRequert request=new ErpOrderQueryRequert();
+            request.setCode(order.getExtendOrderId());
+            if (erpOrderService != null){
+                ErpOrderQueryResponse response=erpOrderService.getOrder(request);
+                if (erpOrderService != dfOrderService){
+                    if(response.getOrders()!=null&&response.getOrders().size()>0){
+                        for(ErpOrderQuery orderQuery : response.getOrders()){
+                            if(orderQuery.getDeliverys()!=null&&orderQuery.getDeliverys().size()>0){
+                                for(ErpDeliverys delivery:orderQuery.getDeliverys()){
+                                    if(delivery.getDelivery()&& StringUtils.isNotEmpty(delivery.getMail_no())){
+                                        //更新商订单状态 删除REDIS
+                                        logger.info("查询到的"+delivery);
+
+                                        fsStoreOrderService.deliveryOrderScrm(order.getOrderCode(),delivery.getMail_no(),delivery.getExpress_code(),delivery.getExpress_name());
+                                        redisCache.deleteObject("delivery"+":"+order.getExtendOrderId());
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
         }
     }
 

+ 9 - 0
fs-company/src/main/java/com/fs/company/controller/company/CompanyProfileController.java

@@ -6,6 +6,7 @@ import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.enums.BusinessType;
+import com.fs.common.enums.ImTypeEnum;
 import com.fs.common.utils.PatternUtils;
 import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.file.FileUploadUtils;
@@ -15,6 +16,8 @@ import com.fs.company.service.ICompanyUserService;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.security.SecurityUtils;
 import com.fs.framework.service.TokenService;
+import com.fs.im.config.ImTypeConfig;
+import com.fs.im.service.OpenIMService;
 import com.fs.system.service.ISysConfigService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,6 +42,8 @@ public class CompanyProfileController extends BaseController
     @Autowired
     private RedisCache redisCache;
 
+    @Autowired
+    private OpenIMService openIMService;
     /**
      * 个人信息
      */
@@ -67,6 +72,10 @@ public class CompanyProfileController extends BaseController
 
         if (userService.updateUserProfile(user) > 0)
         {
+            //修改im用户信息
+            if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+                openIMService.updateUserInfo(user);
+            }
             LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
             // 更新缓存用户信息
             loginUser.getUser().setNickName(user.getNickName());

+ 15 - 6
fs-company/src/main/java/com/fs/company/controller/company/CompanyUserController.java

@@ -32,6 +32,8 @@ import com.fs.framework.service.TokenService;
 import com.fs.his.utils.qrcode.QRCodeUtils;
 import com.fs.his.vo.OptionsVO;
 import com.fs.hisStore.vo.FsStoreProductExportVO;
+import com.fs.im.config.IMConfig;
+import com.fs.im.dto.OpenImResponseDTO;
 import com.fs.im.service.OpenIMService;
 import com.fs.qw.domain.QwCompany;
 import com.fs.qw.service.IQwCompanyService;
@@ -579,7 +581,7 @@ public class CompanyUserController extends BaseController
             requestBody = new JSONObject();
             userIds.add(userId);
             requestBody.put("checkUserIDs", userIds);
-            String body = HttpRequest.post("https://web.im.ysya.top/api/user/account_check")
+            String body = HttpRequest.post(IMConfig.URL+"/user/account_check")
                     .header("operationID", String.valueOf(System.currentTimeMillis()))
                     .header("token", adminToken)
                     .body(requestBody.toString())
@@ -600,13 +602,13 @@ public class CompanyUserController extends BaseController
                     ArrayList<Object> users = new ArrayList<>();
                     HashMap<String, String> map = new HashMap<>();
                     map.put("userID",userId);
-                    map.put("nickname",companyUser.getImNickName());
+                    map.put("nickname",companyUser.getNickName());
                     map.put("faceURL",companyUser.getAvatar());
                     users.add(map);
                     requestBody = new JSONObject();
-                    userIds.add(userId);
+                    //userIds.add(userId);
                     requestBody.put("users", users);
-                    HttpRequest.post("https://web.im.ysya.top/api/user/user_register")
+                    String registerBody = HttpRequest.post(IMConfig.URL+"/user/user_register")
                             .header("operationID", String.valueOf(System.currentTimeMillis()))
                             .header("token", adminToken).body(requestBody.toString()).execute().body();
                 }
@@ -619,7 +621,7 @@ public class CompanyUserController extends BaseController
             requestBody = new JSONObject();
             requestBody.put("platformID",5);
             requestBody.put("userID",userId);
-            String body1 = HttpRequest.post("https://web.im.ysya.top/api/auth/get_user_token")
+            String body1 = HttpRequest.post(IMConfig.URL+"/auth/get_user_token")
                     .header("operationID", String.valueOf(System.currentTimeMillis()))
                     .header("token", adminToken)
                     .body(requestBody.toString()).execute().body();
@@ -631,5 +633,12 @@ public class CompanyUserController extends BaseController
             return R.error("获取管理员token失败");
         }
     }
-
+    @ApiOperation("添加好友")
+    @PostMapping("/importFriend")
+    public R importFriend(@RequestBody HashMap<String,Object> map){
+        String ownerUserID = (String) map.get("ownerUserID");
+        List<String> friendUserIDs = (List<String>)map.get("friendUserIDs");
+        OpenImResponseDTO openImResponseDTO = openIMService.importFriend(ownerUserID, friendUserIDs);
+        return R.ok().put("data",openImResponseDTO);
+    }
 }

+ 71 - 0
fs-company/src/main/java/com/fs/company/controller/store/FsPrescribeController.java

@@ -1,15 +1,20 @@
 package com.fs.company.controller.store;
 
+import cn.hutool.json.JSONObject;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fs.common.annotation.Log;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
+import com.fs.common.enums.ImTypeEnum;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.security.SecurityUtils;
 import com.fs.his.domain.FsExportTask;
 import com.fs.his.domain.FsPrescribe;
+import com.fs.his.dto.PayloadDTO;
 import com.fs.his.param.FsPrescribeParam;
 import com.fs.his.service.IFsExportTaskService;
 import com.fs.his.service.IFsPrescribeService;
@@ -17,6 +22,11 @@ import com.fs.his.vo.FsMessageFeedbackExportListVO;
 import com.fs.his.vo.FsPrescribeExcelListVO;
 import com.fs.his.vo.FsPrescribeListVO;
 import com.fs.his.vo.FsPrescribeVO;
+import com.fs.im.config.ImTypeConfig;
+import com.fs.im.dto.OpenImMsgDTO;
+import com.fs.im.dto.OpenImResponseDTO;
+import com.fs.im.service.OpenIMService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
@@ -31,6 +41,7 @@ import java.util.List;
  * @author fs
  * @date 2023-06-13
  */
+@Slf4j
 @RestController
 @RequestMapping("/store/prescribe")
 public class FsPrescribeController extends BaseController
@@ -39,6 +50,8 @@ public class FsPrescribeController extends BaseController
     private IFsPrescribeService fsPrescribeService;
     @Autowired
     private IFsExportTaskService exportTaskService;
+    @Autowired
+    private OpenIMService openIMService;
     /**
      * 查询处方列表
      */
@@ -72,6 +85,64 @@ public class FsPrescribeController extends BaseController
         return getDataTable(list);
     }
 
+    @GetMapping("/myImList")
+    public TableDataInfo myImList(FsPrescribeParam fsPrescribe)
+    {
+        startPage();
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        //fsPrescribe.setCompanyUserId(loginUser.getUser().getUserId());
+        List<FsPrescribeListVO> list = fsPrescribeService.selectFsPrescribeListVO(fsPrescribe);
+        for (FsPrescribeListVO vo : list) {
+            if (vo.getPatientTel()!=null){
+                vo.setPatientTel(vo.getPatientTel().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
+            }
+        }
+        return getDataTable(list);
+    }
+
+    @PostMapping("/sendPrescribe")
+    public AjaxResult sendPrescribe(@RequestBody FsPrescribeParam fsPrescribe) throws JsonProcessingException {
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        if(ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+            log.info("拼接消息体");
+            //部署到正式环境以后下面这段代码要注释,使用定时任务执行auditPrescribe审核处方以后发送消息
+            ObjectMapper objectMapper = new ObjectMapper();
+            OpenImMsgDTO openImMsgDTO = new OpenImMsgDTO();
+            openImMsgDTO.setSendID("C"+loginUser.getUser().getUserId());
+            openImMsgDTO.setRecvID("U"+fsPrescribe.getUserId());
+            openImMsgDTO.setContentType(110);
+            openImMsgDTO.setSenderPlatformID(5);
+            openImMsgDTO.setSessionType(1);
+            OpenImMsgDTO.Content content = new OpenImMsgDTO.Content();
+            //content.setContent(ext);
+            PayloadDTO payload = new PayloadDTO();
+            payload.setData("prescribe");
+            PayloadDTO.Extension extension = new PayloadDTO.Extension();
+            extension.setDiagnose(fsPrescribe.getDiagnose());
+            extension.setPrescribeId(fsPrescribe.getPrescribeId().toString());
+            payload.setExtension(extension);
+            extension.setStatus(fsPrescribe.getStatus());
+            OpenImMsgDTO.ImData imData = new OpenImMsgDTO.ImData();
+
+            imData.setPayload(payload);
+
+            String imJson = objectMapper.writeValueAsString(imData);
+            content.setData(imJson);
+            openImMsgDTO.setContent(content);
+
+            JSONObject jsonObject = new JSONObject(openImMsgDTO);
+            log.info("开始发送消息");
+//            OpenImMsgDTO.OfflinePushInfo offlinePushInfo = new OpenImMsgDTO.OfflinePushInfo();
+//            offlinePushInfo.setDesc("处方单");
+//            offlinePushInfo.setTitle(doctor.getDoctorName());
+//            offlinePushInfo.setIOSBadgeCount(true);
+//            offlinePushInfo.setIOSPushSound("");
+//            openImMsgDTO.setOfflinePushInfo(offlinePushInfo);
+            OpenImResponseDTO openImResponseDTO = openIMService.openIMSendMsg(openImMsgDTO);
+            return AjaxResult.success(openImResponseDTO);
+        }
+        return AjaxResult.success(null);
+    }
 
     /**
      * 导出处方列表

+ 2 - 1
fs-company/src/main/resources/application.yml

@@ -4,7 +4,7 @@ server:
 spring:
   profiles:
 #    active: druid-fcky-test
-    active: dev
+#    active: dev
 #    active: druid-jzzx-test
 #    active: druid-hdt
 #    active: druid-sxjz
@@ -12,3 +12,4 @@ spring:
 #    active: druid-myhk
 #    active: druid-sft
 #    active: dev-yjb
+    active: druid-myhk-test

+ 4 - 3
fs-doctor-app/src/main/java/com/fs/app/controller/DoctorController.java

@@ -121,7 +121,7 @@ public class DoctorController extends  AppBaseController {
             requestBody = new JSONObject();
             userIds.add(userId);
             requestBody.put("checkUserIDs", userIds);
-            String body = HttpRequest.post("https://web.im.ysya.top/api/user/account_check")
+            String body = HttpRequest.post(IMConfig.URL+"/user/account_check")
                     .header("operationID", String.valueOf(System.currentTimeMillis()))
                     .header("token", adminToken)
                     .body(requestBody.toString())
@@ -148,9 +148,10 @@ public class DoctorController extends  AppBaseController {
                     requestBody = new JSONObject();
                     userIds.add(userId);
                     requestBody.put("users", users);
-                    HttpRequest.post("https://web.im.ysya.top/api/user/user_register")
+                    String body1 = HttpRequest.post(IMConfig.URL+"/user/user_register")
                             .header("operationID", String.valueOf(System.currentTimeMillis()))
                             .header("token", adminToken).body(requestBody.toString()).execute().body();
+                    log.info("注册结果:"+body1);
                 }
             } else {
                 return R.error("返回结果为空");
@@ -161,7 +162,7 @@ public class DoctorController extends  AppBaseController {
             requestBody = new JSONObject();
             requestBody.put("platformID",5);
             requestBody.put("userID",userId);
-            String body1 = HttpRequest.post("https://web.im.ysya.top/api/auth/get_user_token")
+            String body1 = HttpRequest.post(IMConfig.URL+"/auth/get_user_token")
                     .header("operationID", String.valueOf(System.currentTimeMillis()))
                     .header("token", adminToken)
                     .body(requestBody.toString()).execute().body();

+ 16 - 10
fs-doctor-app/src/main/java/com/fs/app/controller/DrugReportController.java

@@ -8,6 +8,7 @@ import com.fs.app.param.DrugReportAddParam;
 import com.fs.app.param.DrugReportFinishParam;
 import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.core.domain.R;
+import com.fs.common.enums.ImTypeEnum;
 import com.fs.his.domain.FsDoctor;
 import com.fs.his.domain.FsDrugReport;
 import com.fs.his.domain.FsFollow;
@@ -22,6 +23,7 @@ import com.fs.his.vo.FsDrugReportDVO;
 import com.fs.his.vo.FsDrugReportListDVO;
 import com.fs.his.vo.FsFollowListDVO;
 import com.fs.im.config.IMConfig;
+import com.fs.im.config.ImTypeConfig;
 import com.fs.im.dto.*;
 import com.fs.im.service.IImService;
 import com.fs.im.service.OpenIMService;
@@ -109,11 +111,13 @@ public class DrugReportController extends AppBaseController {
             msg.setMsgContent(new MsgDataFormatDTO("drugReport",ext,report.getReportId().toString()));
             msgs.add(msg);
             msgDTO.setMsgBody(msgs);
-            //imService.sendMsg(msgDTO);
-            ObjectMapper objectMapper = new ObjectMapper();
-            String ex = objectMapper.writeValueAsString(customDTO);
-            openIMService.sendUtil("D"+follow.getDoctorId(),"U"+follow.getUserId(),110,"drugReport","","","",report.getReportId().toString(),ex);
-
+            if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+                ObjectMapper objectMapper = new ObjectMapper();
+                String ex = objectMapper.writeValueAsString(customDTO);
+                openIMService.sendUtil("D"+follow.getDoctorId(),"U"+follow.getUserId(),110,"drugReport","","","",report.getReportId().toString(),ex);
+            }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+                imService.sendMsg(msgDTO);
+            }
             fsDrugReportCountService.addReportCountByUserIdAndDoctorId(follow.getUserId(),follow.getDoctorId());
 
             return R.ok();
@@ -144,11 +148,13 @@ public class DrugReportController extends AppBaseController {
         msg.setMsgContent(new MsgDataFormatDTO("您的用药咨询报告已出具,本次咨询结束"));
         msgs.add(msg);
         msgDTO.setMsgBody(msgs);
-        //imService.sendMsg(msgDTO);
-        ObjectMapper objectMapper = new ObjectMapper();
-        String ex = objectMapper.writeValueAsString(customDTO);
-        openIMService.sendUtil("D"+follow.getDoctorId(),"U"+follow.getUserId(),110,"finishDrugReport","","您的用药咨询报告已出具,本次咨询结束","","",ex);
-
+        if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+            ObjectMapper objectMapper = new ObjectMapper();
+            String ex = objectMapper.writeValueAsString(customDTO);
+            openIMService.sendUtil("D"+follow.getDoctorId(),"U"+follow.getUserId(),110,"finishDrugReport","","您的用药咨询报告已出具,本次咨询结束","","",ex);
+        }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+            imService.sendMsg(msgDTO);
+        }
         redisTemplate.delete("DrugReport:doctorId:" + follow.getDoctorId() + ":userId:" + follow.getUserId());
         return R.ok();
 

+ 14 - 7
fs-doctor-app/src/main/java/com/fs/app/controller/InquiryOrderController.java

@@ -10,6 +10,8 @@ import com.fs.common.BeanCopyUtils;
 import com.fs.common.annotation.Log;
 import com.fs.common.core.domain.R;
 import com.fs.common.enums.BusinessType;
+import com.fs.common.enums.ImTypeEnum;
+import com.fs.common.utils.SecurityUtils;
 import com.fs.common.utils.StringUtils;
 import com.fs.company.service.ICompanyService;
 import com.fs.core.config.WxPayProperties;
@@ -19,6 +21,7 @@ import com.fs.his.dto.FsInquiryOrderPatientDTO;
 import com.fs.his.param.*;
 import com.fs.his.service.*;
 import com.fs.his.vo.*;
+import com.fs.im.config.ImTypeConfig;
 import com.fs.im.dto.MsgCustomDTO;
 import com.fs.im.dto.MsgDTO;
 import com.fs.im.dto.MsgDataDTO;
@@ -37,6 +40,7 @@ import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -286,9 +290,9 @@ public class InquiryOrderController extends  AppBaseController {
 
         }
         FsInquiryOrder inquiryOrder=inquiryOrderService.selectFsInquiryOrderByOrderId(report.getOrderId());
-        /*MsgDTO msgDTO=new MsgDTO();
+        MsgDTO msgDTO=new MsgDTO();
         msgDTO.setFrom_Account("D-"+report.getDoctorId().toString());
-        msgDTO.setTo_Account("U-"+report.getUserId().toString());*/
+        msgDTO.setTo_Account("U-"+report.getUserId().toString());
         MsgCustomDTO customDTO=new MsgCustomDTO();
         customDTO.setType("startInquiry");
         customDTO.setImType(1);
@@ -302,11 +306,14 @@ public class InquiryOrderController extends  AppBaseController {
         msg.setMsgContent(new MsgDataFormatDTO("report",ext,orderId));
         msg.setMsgType("TIMCustomElem");//TIMCustomElem
         msgs.add(msg);
-        msgDTO.setMsgBody(msgs);*/
-        //imService.sendMsg(msgDTO);
-        ObjectMapper objectMapper = new ObjectMapper();
-        String ex = objectMapper.writeValueAsString(customDTO);
-        openIMService.sendUtil("D"+report.getDoctorId(),"U"+report.getUserId(),110,"report","","","",report.getOrderId().toString(),ex);
+        msgDTO.setMsgBody(msgs);
+        if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+            ObjectMapper objectMapper = new ObjectMapper();
+            String ex = objectMapper.writeValueAsString(customDTO);
+            openIMService.sendUtil("D"+report.getDoctorId(),"U"+report.getUserId(),110,"report","","","",report.getOrderId().toString(),ex);
+        }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+            imService.sendMsg(msgDTO);
+        }
         /*JSONObject jsonObject = new JSONObject();
         OpenImMsgDTO openImMsgDTO = new OpenImMsgDTO();
         openImMsgDTO.setSendID("D"+report.getDoctorId().toString());

+ 41 - 1
fs-doctor-app/src/main/java/com/fs/app/controller/PrescribeController.java

@@ -8,6 +8,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fs.app.annotation.Login;
 import com.fs.common.core.domain.R;
+import com.fs.common.enums.ImTypeEnum;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.StringUtils;
 import com.fs.core.utils.OrderCodeUtils;
@@ -19,6 +20,7 @@ import com.fs.his.service.*;
 import com.fs.his.vo.FsDoctorPrescribeListDVO;
 import com.fs.his.vo.FsPrescribeListDVO;
 import com.fs.im.config.IMConfig;
+import com.fs.im.config.ImTypeConfig;
 import com.fs.im.dto.MsgCustomDTO;
 import com.fs.im.dto.OpenImMsgDTO;
 import com.fs.im.dto.OpenImResponseDTO;
@@ -197,7 +199,7 @@ public class PrescribeController extends  AppBaseController {
     @ApiOperation("创建处方")
     @Transactional
     @PostMapping("/createPrescribe")
-    public R createPrescribe(@Validated @RequestBody FsPrescribeCreateParam param, HttpServletRequest request){
+    public R createPrescribe(@Validated @RequestBody FsPrescribeCreateParam param, HttpServletRequest request) throws JsonProcessingException {
 
         //获取问诊单
         FsInquiryOrder inquiryOrder=inquiryOrderService.selectFsInquiryOrderByOrderId(param.getOrderId());
@@ -264,6 +266,44 @@ public class PrescribeController extends  AppBaseController {
                     prescribeDrug.setPrescribeId(prescribe.getPrescribeId());
                     prescribeDrugService.insertFsPrescribeDrug(prescribeDrug);
                 }
+                if(ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+                    log.info("拼接消息体");
+                    //部署到正式环境以后下面这段代码要注释,使用定时任务执行auditPrescribe审核处方以后发送消息
+                    ObjectMapper objectMapper = new ObjectMapper();
+                    OpenImMsgDTO openImMsgDTO = new OpenImMsgDTO();
+                    openImMsgDTO.setSendID("D"+inquiryOrder.getDoctorId());
+                    openImMsgDTO.setRecvID("U"+inquiryOrder.getUserId());
+                    openImMsgDTO.setContentType(110);
+                    openImMsgDTO.setSenderPlatformID(5);
+                    openImMsgDTO.setSessionType(1);
+                    OpenImMsgDTO.Content content = new OpenImMsgDTO.Content();
+                    //content.setContent(ext);
+                    PayloadDTO payload = new PayloadDTO();
+                    payload.setData("prescribe");
+                    PayloadDTO.Extension extension = new PayloadDTO.Extension();
+                    extension.setDiagnose(inquiryOrder.getTitle());
+                    extension.setPrescribeId(prescribe.getPrescribeId().toString());
+                    payload.setExtension(extension);
+                    extension.setStatus(prescribe.getStatus());
+                    OpenImMsgDTO.ImData imData = new OpenImMsgDTO.ImData();
+
+                    imData.setPayload(payload);
+
+                    String imJson = objectMapper.writeValueAsString(imData);
+                    content.setData(imJson);
+                    openImMsgDTO.setContent(content);
+
+                    JSONObject jsonObject = new JSONObject(openImMsgDTO);
+                    log.info("开始发送消息");
+                    OpenImMsgDTO.OfflinePushInfo offlinePushInfo = new OpenImMsgDTO.OfflinePushInfo();
+                    offlinePushInfo.setDesc("处方单");
+                    offlinePushInfo.setTitle(doctor.getDoctorName());
+                    offlinePushInfo.setIOSBadgeCount(true);
+                    offlinePushInfo.setIOSPushSound("");
+                    openImMsgDTO.setOfflinePushInfo(offlinePushInfo);
+                    OpenImResponseDTO openImResponseDTO = openIMService.openIMSendMsg(openImMsgDTO);
+                }
+
 
                 return R.ok("操作成功").put("prescribe",prescribe);
             }

+ 18 - 2
fs-doctor-app/src/main/java/com/fs/framework/config/MyBatisConfig.java

@@ -28,7 +28,7 @@ import java.util.List;
 
 /**
  * Mybatis支持*匹配扫描包
- * 
+ *
 
  */
 @Configuration
@@ -115,6 +115,22 @@ public class MyBatisConfig
         return resources.toArray(new Resource[resources.size()]);
     }
 
+    //    @Bean
+//    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
+//    {
+//        String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
+//        String mapperLocations = env.getProperty("mybatis.mapperLocations");
+//        String configLocation = env.getProperty("mybatis.configLocation");
+//        typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
+//        VFS.addImplClass(SpringBootVFS.class);
+//
+//        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
+//        sessionFactory.setDataSource(dataSource);
+//        sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
+//        sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
+//        sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
+//        return sessionFactory.getObject();
+//    }
     @Bean
     public SqlSessionFactory sqlSessionFactorys(DataSource dataSource) throws Exception
     {
@@ -131,4 +147,4 @@ public class MyBatisConfig
         sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
         return sessionFactory.getObject();
     }
-}
+}

+ 2 - 2
fs-doctor-app/src/main/resources/application.yml

@@ -5,5 +5,5 @@ server:
 # Spring配置
 spring:
   profiles:
-#    active: dev
-    active: druid-syysy-test
+    active: druid-myhk-test
+#    active: druid-jnmy

+ 2 - 2
fs-doctor-app/src/main/resources/mybatis/mybatis-config.xml

@@ -3,7 +3,7 @@
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 <configuration>
-	
+
 	<settings>
 		<setting name="cacheEnabled"             value="true" />  <!-- 全局映射器启用缓存 -->
 		<setting name="useGeneratedKeys"         value="true" />  <!-- 允许 JDBC 支持自动生成主键 -->
@@ -11,5 +11,5 @@ PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 		<setting name="logImpl"                  value="SLF4J" /> <!-- 指定 MyBatis 所用日志的具体实现 -->
 		 <setting name="mapUnderscoreToCamelCase" value="true"/>
 	</settings>
-	
+
 </configuration>

+ 3 - 0
fs-service/src/main/java/com/fs/company/service/impl/CompanyServiceImpl.java

@@ -690,6 +690,9 @@ public class CompanyServiceImpl implements ICompanyService
         }
     }
 
+
+
+
     @Override
     @Transactional
     public void subtractCompanyMoneyScrm(FsStoreOrderScrm order) {

+ 9 - 10
fs-service/src/main/java/com/fs/core/utils/OrderCodeUtils.java

@@ -44,16 +44,15 @@ public class OrderCodeUtils {
 
     }
     public static String getOrderSn(){
-//        String url= FSConfig.getCommonApi()+ "/app/common/genOrderCode";
-////        String url= "42.194.245.189:8010/app/common/genOrderCode";
-//        String json = HttpRequest.get(url)
-//                .execute().body();
-//        OrderCodeVO vo= JSONUtil.toBean(json, OrderCodeVO.class);
-//        if(vo.getCode()==200){
-//            return vo.getOrderCode();
-//        }
-//        else return null;
-        return OrderCodeUtils.genOrderSn();
+        String url= FSConfig.getCommonApi()+ "/app/common/genOrderCode";
+//        String url= "42.194.245.189:8010/app/common/genOrderCode";
+        String json = HttpRequest.get(url)
+                .execute().body();
+        OrderCodeVO vo= JSONUtil.toBean(json, OrderCodeVO.class);
+        if(vo.getCode()==200){
+            return vo.getOrderCode();
+        }
+        else return null;
 
     }
 

+ 1 - 1
fs-service/src/main/java/com/fs/erp/service/IErpOrderService.java

@@ -16,7 +16,7 @@ public interface IErpOrderService
     ErpOrderResponse refundOrder(ErpRefundOrder order);
     ErpDeliverysResponse getDeliver(ErpDeliverysRequest param);
     ErpOrderQueryResponse getOrder(ErpOrderQueryRequert param);
-
+    ErpOrderQueryResponse getScrmOrder(ErpOrderQueryRequert param);
     BaseResponse refundUpdate(ErpRefundUpdateRequest param);
     BaseResponse refundUpdateScrm(ErpRefundUpdateRequest param);
 

+ 5 - 0
fs-service/src/main/java/com/fs/erp/service/impl/DfOrderServiceImpl.java

@@ -240,6 +240,11 @@ public class DfOrderServiceImpl implements IErpOrderService
         return response;
     }
 
+    @Override
+    public ErpOrderQueryResponse getScrmOrder(ErpOrderQueryRequert param) {
+        return null;
+    }
+
     @Override
     public BaseResponse refundUpdate(ErpRefundUpdateRequest request) {
         ErpRefundOrder erpRefundOrder = new ErpRefundOrder();

+ 5 - 0
fs-service/src/main/java/com/fs/erp/service/impl/ErpOrderServiceImpl.java

@@ -118,6 +118,11 @@ public class ErpOrderServiceImpl implements IErpOrderService
         return response;
     }
 
+    @Override
+    public ErpOrderQueryResponse getScrmOrder(ErpOrderQueryRequert param) {
+        return null;
+    }
+
     @Override
     public BaseResponse refundUpdate(ErpRefundUpdateRequest request) {
         FsSysConfig sysConfig = configUtil.getSysConfig();

+ 5 - 0
fs-service/src/main/java/com/fs/erp/service/impl/HzOMSErpOrderServiceImpl.java

@@ -87,6 +87,11 @@ public class HzOMSErpOrderServiceImpl implements IErpOrderService {
         return null;
     }
 
+    @Override
+    public ErpOrderQueryResponse getScrmOrder(ErpOrderQueryRequert param) {
+        return null;
+    }
+
     @Override
     public BaseResponse refundUpdate(ErpRefundUpdateRequest param) {
 

+ 107 - 0
fs-service/src/main/java/com/fs/erp/service/impl/JSTErpOrderServiceImpl.java

@@ -355,6 +355,35 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
         return response;
     }
 
+
+    @Override
+    public ErpOrderQueryResponse getScrmOrder(ErpOrderQueryRequert param) {
+        // 1. 构建查询请求DTO
+        OrderQueryRequestDTO requestDTO = new OrderQueryRequestDTO();
+        requestDTO.setOIds(Collections.singletonList(Long.valueOf(param.getCode())));
+
+
+        // 2. 调用ERP服务查询订单
+        OrderQueryResponseDTO query = jstErpHttpService.query(requestDTO);
+
+        // 3. 构建响应对象
+        ErpOrderQueryResponse response = new ErpOrderQueryResponse();
+
+        // 4. 设置基本响应信息
+
+        // 5. 转换订单数据
+        if (query.getOrders() != null && !query.getOrders().isEmpty()) {
+            List<ErpOrderQuery> erpOrders = query.getOrders().stream()
+                    .map(this::convertToErpOrderQueryScrm)
+                    .collect(Collectors.toList());
+
+            response.setOrders(erpOrders);
+        } else {
+            response.setOrders(Collections.emptyList());
+        }
+
+        return response;
+    }
     /**
      * 将OrderQueryResponseDTO.Order转换为ErpOrderQuery
      *
@@ -438,6 +467,84 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
     }
 
 
+
+    private ErpOrderQuery convertToErpOrderQueryScrm(OrderQueryResponseDTO.Order order) {
+        ErpOrderQuery erpOrder = new ErpOrderQuery();
+
+        FsStoreOrderScrm fsStoreOrder = fsStoreOrderService.selectFsStoreOrderScrmByOrderCode(order.getSoId());
+        Asserts.notNull(fsStoreOrder,"该订单号没有找到!");
+
+        // 设置基本订单信息
+        erpOrder.setCode(order.getSoId());
+
+        // 计算订单总数量
+        if (order.getItems() != null && !order.getItems().isEmpty()) {
+            int totalQty = order.getItems().stream()
+                    .mapToInt(OrderQueryResponseDTO.OrderItem::getQty)
+                    .sum();
+            erpOrder.setQty(totalQty);
+        }
+
+        // 设置金额相关信息
+        erpOrder.setAmount(order.getAmount() != null ? order.getAmount().doubleValue() : null);
+        erpOrder.setPayment(order.getPaidAmount() != null ? order.getPaidAmount().doubleValue() : null);
+
+        // 设置其他订单属性
+        erpOrder.setCod(order.getIsCod());
+        erpOrder.setPlatform_code(order.getOrderFrom());
+
+        // 尝试解析创建时间
+        try {
+            if (order.getCreated() != null) {
+                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                erpOrder.setCreatetime(formatter.parse(order.getCreated()));
+            }
+        } catch (Exception e) {
+            // 日期解析异常处理
+            // 可以记录日志或保持为null
+        }
+
+        // 设置店铺信息
+        erpOrder.setShop_name(order.getShopName());
+        erpOrder.setShop_code(String.valueOf(order.getShopId()));
+
+        // 设置物流信息
+        erpOrder.setExpress_name(order.getLogisticsCompany());
+        erpOrder.setExpress_code(order.getLId());
+
+        // 设置收件人信息
+//        erpOrder.setReceiver_name(fsStoreOrder.getRealName());
+        erpOrder.setReceiver_name(fsStoreOrder.getRealName());
+        erpOrder.setReceiver_phone(fsStoreOrder.getUserPhone());
+        erpOrder.setReceiver_mobile(fsStoreOrder.getUserPhone());
+
+        // 构建完整地址
+        erpOrder.setReceiver_address(fsStoreOrder.getUserAddress());
+
+        // 如果是已发货
+        if(ObjectUtil.equal(order.getStatus(), ErpQueryOrderStatusEnum.SENT.getCode())){
+            List<ErpDeliverys> deliverysList = new ArrayList<>();
+
+            ErpDeliverys delivery = new ErpDeliverys();
+            delivery.setMail_no(order.getLId());
+            delivery.setExpress_code(order.getLcId());
+            delivery.setExpress_name(order.getLogisticsCompany());
+            delivery.setDelivery(true);
+            delivery.setCode(order.getSoId());
+
+            deliverysList.add(delivery);
+            erpOrder.setDeliverys(deliverysList);
+
+            // 设置发货状态,假设有物流单号就是已发货状态
+            erpOrder.setDelivery_state(1);
+        } else {
+            erpOrder.setDelivery_state(0);
+        }
+
+        return erpOrder;
+    }
+
+
     @Override
     public BaseResponse refundUpdate(ErpRefundUpdateRequest param) {
 

+ 5 - 0
fs-service/src/main/java/com/fs/erp/service/impl/K9OrderScrmServiceImpl.java

@@ -128,6 +128,11 @@ public class K9OrderScrmServiceImpl implements IErpOrderService {
         return null;
     }
 
+    @Override
+    public ErpOrderQueryResponse getScrmOrder(ErpOrderQueryRequert param) {
+        return null;
+    }
+
     @Override
     public BaseResponse refundUpdate(ErpRefundUpdateRequest param) {
         return null;

+ 5 - 0
fs-service/src/main/java/com/fs/erp/service/impl/WdtErpOrderServiceImpl.java

@@ -827,6 +827,11 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
         }
     }
 
+    @Override
+    public ErpOrderQueryResponse getScrmOrder(ErpOrderQueryRequert param) {
+        return null;
+    }
+
     @Override
     public BaseResponse refundUpdate(ErpRefundUpdateRequest param) {
         FsSysConfig sysConfig = configUtil.getSysConfig();

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

@@ -19,4 +19,5 @@ public class InquiryConfigDTO implements Serializable {
     private Integer unReceiveCancelTime;
     private BigDecimal companyPrice;
     private BigDecimal companyPrescribePrice;
+    private String inquirySubType;
 }

+ 4 - 0
fs-service/src/main/java/com/fs/his/dto/PayloadDTO.java

@@ -29,6 +29,10 @@ public class PayloadDTO implements Serializable {
         private String appRealLink;
         private String writeStatus;
         private String packageId;
+        private String type;
+        private Long companyId;
+        private Long companyUserId;
+        private Long doctorId;
 
     }
 

+ 18 - 0
fs-service/src/main/java/com/fs/his/mapper/FsPrescribeMapper.java

@@ -2,6 +2,7 @@ package com.fs.his.mapper;
 
 import java.util.List;
 import com.fs.his.domain.FsPrescribe;
+import com.fs.his.param.FsPrescribeListDCompanyParam;
 import com.fs.his.param.FsPrescribeListDParam;
 import com.fs.his.param.FsPrescribeListUParam;
 import com.fs.his.param.FsPrescribeParam;
@@ -134,6 +135,23 @@ public interface FsPrescribeMapper
             "</script>"})
     List<FsPrescribeListUVO> selectFsPrescribeListUVO(@Param("maps")FsPrescribeListUParam param);
 
+    @Select({"<script> " +
+            "select p.*  from fs_prescribe p " +
+            "where 1=1  " +
+            "<if test = 'maps.status != null    '> " +
+            "and p.status = #{maps.status} " +
+            "</if>" +
+            "<if test = ' maps.patientName!=null and maps.patientName != \"\"  '> " +
+            "and p.patient_name like concat('%', #{maps.patientName}, '%') " +
+            "</if>" +
+            "<if test = ' maps.prescribeType!=null and maps.prescribeType != \"\"  '> " +
+            "and p.prescribe_type = #{maps.prescribeType} " +
+            "</if>" +
+            " order by p.create_time desc "+
+            "</script>"})
+    List<FsPrescribeListDVO> selectFsPrescribeListUVOByCompanyUser(@Param("maps") FsPrescribeListDCompanyParam param);
+
+
 
     @Select("select so.*,ffff.doctor_name prescribeDoctorName, us.nick_name ,dc.doctor_name,dp.doctor_name doctor_drug_name,fso.order_code,fso.`status` order_status,fse.store_name FROM fs_prescribe so  LEFT JOIN fs_user us ON us.user_id=so.user_id LEFT JOIN fs_doctor dc ON dc.doctor_id = so.doctor_id LEFT JOIN fs_doctor dp ON dp.doctor_id =so.drug_doctor_id LEFT JOIN fs_store_order fso ON fso.order_id = so.store_order_id LEFT JOIN fs_store fse ON fse.store_id = so.store_id  LEFT JOIN fs_doctor ffff ON ffff.doctor_id=so.prescribe_doctor_id  where so.prescribe_id=#{prescribeId}")
     FsPrescribeVO selectFsPrescribeByPrescribeIdVO(Long prescribeId);

+ 9 - 1
fs-service/src/main/java/com/fs/his/mapper/FsStoreOrderMapper.java

@@ -16,6 +16,7 @@ import com.fs.his.domain.FsStoreOrderItem;
 import com.fs.his.domain.FsStoreOrderLogs;
 import com.fs.his.param.*;
 import com.fs.his.vo.*;
+import com.fs.hisStore.domain.FsStoreOrderScrm;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
@@ -354,6 +355,9 @@ public interface FsStoreOrderMapper
     @Select("SELECT * FROM fs_store_order WHERE order_code =#{orderCode}")
     FsStoreOrder selectFsStoreOrderByOrderCode(String orderCode);
 
+    @Select("SELECT * FROM fs_store_order_scrm WHERE order_code =#{orderCode}")
+    FsStoreOrderScrm selectFsStoreOrderScrmByOrderCode(String orderCode);
+
     @Select("select so.*,st.store_name,us.nick_name,us.phone,p.patient_age,p.patient_gender,p.patient_descs,p.patient_name," +
             "d.doctor_name,fp.prescribe_code,fd.doctor_name follow_doctor_name,c.company_name,cu.user_name company_user_name,pat.relation  " +
             "FROM fs_store_order so LEFT JOIN fs_store st ON so.store_id =st.store_id " +
@@ -1126,7 +1130,8 @@ public interface FsStoreOrderMapper
     @Select("select * from fs_store_order where extend_order_id  like 'SO%' and `status`=2 ")
     List<FsStoreOrder> selectOmsOrderdeliveryOp();
 
-
+    @Select("select * from fs_store_order_scrm where extend_order_id  is not null and `status`=1 ")
+    List<FsStoreOrderScrm> selectOmsOrderdeliveryOpScrm();
     List<FsStoreOrder> selectFsStoreOrderByOrderIdIn(@Param("ids") List<Long> ids);
 
     List<FsStoreOrder> selectFsStoreOrderStatisticsByUserId(@Param("ids") List<Long> ids);
@@ -1146,6 +1151,9 @@ public interface FsStoreOrderMapper
     @Select("select * from fs_store_order where  `status`=2 and extend_order_id is not null and extend_order_id != '' ")
     List<FsStoreOrder> selectWdtOmsOrderdeliveryOp();
 
+    @Select("select * from fs_store_order_scrm where  `status`=1 and extend_order_id is not null and extend_order_id != '' ")
+    List<FsStoreOrderScrm> selectWdtOmsOrderdeliveryOpScrm();
+
     int batchUpdateErpByOrderIds(@Param("maps") List<Map<String, String>> maps);
 
     @Select(" select * from fs_store_order where order_code=#{orderCode} and store_id=#{storeId}")

+ 27 - 0
fs-service/src/main/java/com/fs/his/param/FsPrescribeListDCompanyParam.java

@@ -0,0 +1,27 @@
+package com.fs.his.param;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import java.io.Serializable;
+@Data
+public class FsPrescribeListDCompanyParam  extends BaseParam implements Serializable {
+
+    Long doctorId;
+    Long doctorDrugId;
+    Integer status;//1待审核 2历史订单
+    Integer type;//1医生 2药师
+    String patientName;
+    String prescribeCode;
+    Integer prescribeType;
+    Long companyUserId;
+
+    /** 开始时间 */
+    @JsonIgnore
+    private String beginTime;
+    /** 结束时间 */
+    @JsonIgnore
+    private String endTime;
+
+
+}

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

@@ -17,6 +17,7 @@ public class FsPrescribeListDParam extends BaseParam implements Serializable {
     String patientName;
     String prescribeCode;
     Integer prescribeType;
+    Long companyUserId;
 
     /** 开始时间 */
     @JsonIgnore

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

@@ -8,4 +8,5 @@ import java.io.Serializable;
 public class FsPrescribeListUParam extends BaseParam implements Serializable {
     Long userId;
     Integer status;
+    String patientName;
 }

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

@@ -134,6 +134,7 @@ public class FsPrescribeParam {
     private Long companyUserId;
 
     private Long taskId;//任务ID
+    private boolean isImOpen;
 
 
 

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

@@ -104,4 +104,6 @@ public interface IFsPrescribeService
     List<Long> selectFsPrescribeByPrescribeIdByOrderType();
 
     void PrescribeStoreImg(Long id);
+
+    List<FsPrescribeListDVO> selectFsPrescribeListDVOByCompanyUser(FsPrescribeListDCompanyParam param);
 }

+ 5 - 0
fs-service/src/main/java/com/fs/his/service/IFsStoreOrderService.java

@@ -21,6 +21,7 @@ import com.fs.his.dto.ExpressResultDTO;
 import com.fs.his.dto.StoreOrderExpressExportDTO;
 import com.fs.his.param.*;
 import com.fs.his.vo.*;
+import com.fs.hisStore.domain.FsStoreOrderScrm;
 import org.springframework.transaction.annotation.Transactional;
 
 /**
@@ -265,4 +266,8 @@ public interface IFsStoreOrderService
     Map<String,BigDecimal> selectFsStoreOrderStatistics(FsStoreOrderParam fsStoreOrder);
 
     String selectFsStoreOrderProductStatistics(FsStoreOrderParam fsStoreOrder);
+
+    void deliveryOrderScrm(String orderCode, String mailNo, String expressCode, String expressName);
+
+    FsStoreOrderScrm selectFsStoreOrderScrmByOrderCode(String soId);
 }

+ 32 - 22
fs-service/src/main/java/com/fs/his/service/impl/FsDoctorServiceImpl.java

@@ -3,6 +3,7 @@ package com.fs.his.service.impl;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fs.common.enums.ImTypeEnum;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.SecurityUtils;
@@ -23,6 +24,7 @@ import com.fs.his.utils.HttpUtil;
 import com.fs.his.utils.qrcode.QRCodeUtils;
 import com.fs.his.vo.*;
 import com.fs.im.config.IMConfig;
+import com.fs.im.config.ImTypeConfig;
 import com.fs.im.dto.*;
 import com.fs.im.service.IImService;
 import com.fs.im.service.OpenIMService;
@@ -416,10 +418,14 @@ public class FsDoctorServiceImpl implements IFsDoctorService
                         msg.setMsgType("TIMCustomElem");//TIMCustomElem
                         msgs.add(msg);
                         msgDTO.setMsgBody(msgs);
+                        if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+                            ObjectMapper objectMapper = new ObjectMapper();
+                            String ex = objectMapper.writeValueAsString(customDTO3);
+                            openIMService.sendUtil("D"+fsFollow.getDoctorId(),"U"+fsFollow.getUserId(),110,"follow","","",followId,"",ex);
+                        }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+                            imService.sendMsg(msgDTO);
+                        }
                         //imService.sendMsg(msgDTO);
-                        ObjectMapper objectMapper = new ObjectMapper();
-                        String ex = objectMapper.writeValueAsString(customDTO3);
-                        openIMService.sendUtil("D"+fsFollow.getDoctorId(),"U"+fsFollow.getUserId(),110,"follow","","",followId,"",ex);
                         /*OpenImMsgDTO openImMsgDTO = new OpenImMsgDTO();
                         openImMsgDTO.setSendID("D"+fsFollow.getDoctorId().toString());
                         openImMsgDTO.setRecvID("U"+fsFollow.getUserId().toString());
@@ -449,25 +455,29 @@ public class FsDoctorServiceImpl implements IFsDoctorService
                         msg2.setMsgType("TIMTextElem");//TIMCustomElem
                         msgs2.add(msg2);
                         msgDTO2.setMsgBody(msgs2);
-                        //imService.sendMsg(msgDTO2);
-                        OpenImMsgDTO openImMsgDTO1 = new OpenImMsgDTO();
-                        openImMsgDTO1.setSendID("D"+fsFollow.getDoctorId().toString());
-                        openImMsgDTO1.setRecvID("U"+fsFollow.getUserId().toString());
-                        openImMsgDTO1.setContentType(101);
-                        openImMsgDTO1.setSenderPlatformID(5);
-                        openImMsgDTO1.setSessionType(1);
-                        OpenImMsgDTO.Content content1 = new OpenImMsgDTO.Content();
-                        content1.setContent("尊敬的用户,为了您的健康,请认真填写随访单,以便医生随时了解您的用药情况,评估治疗效果。如果在用药中出现任何不适,可直接在对话框中描述您目前的情况,我将及时为您解答!");
-                        openImMsgDTO1.setContent(content1);
-                        //openImMsgDTO.setEx(customDTO);
-                        OpenImMsgDTO.OfflinePushInfo offlinePushInfo = new OpenImMsgDTO.OfflinePushInfo();
-                        offlinePushInfo.setDesc(content1.getContent());
-                        String doctorNameByIds = fsDoctorMapper.selectDoctorNameByIds(fsFollow.getDoctorId().toString());
-                        offlinePushInfo.setTitle(doctorNameByIds);
-                        offlinePushInfo.setIOSBadgeCount(true);
-                        offlinePushInfo.setIOSPushSound("");
-                        openImMsgDTO1.setOfflinePushInfo(offlinePushInfo);
-                        openIMService.openIMSendMsg(openImMsgDTO1);
+                        if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+                            OpenImMsgDTO openImMsgDTO1 = new OpenImMsgDTO();
+                            openImMsgDTO1.setSendID("D"+fsFollow.getDoctorId().toString());
+                            openImMsgDTO1.setRecvID("U"+fsFollow.getUserId().toString());
+                            openImMsgDTO1.setContentType(101);
+                            openImMsgDTO1.setSenderPlatformID(5);
+                            openImMsgDTO1.setSessionType(1);
+                            OpenImMsgDTO.Content content1 = new OpenImMsgDTO.Content();
+                            content1.setContent("尊敬的用户,为了您的健康,请认真填写随访单,以便医生随时了解您的用药情况,评估治疗效果。如果在用药中出现任何不适,可直接在对话框中描述您目前的情况,我将及时为您解答!");
+                            openImMsgDTO1.setContent(content1);
+                            //openImMsgDTO.setEx(customDTO);
+                            OpenImMsgDTO.OfflinePushInfo offlinePushInfo = new OpenImMsgDTO.OfflinePushInfo();
+                            offlinePushInfo.setDesc(content1.getContent());
+                            String doctorNameByIds = fsDoctorMapper.selectDoctorNameByIds(fsFollow.getDoctorId().toString());
+                            offlinePushInfo.setTitle(doctorNameByIds);
+                            offlinePushInfo.setIOSBadgeCount(true);
+                            offlinePushInfo.setIOSPushSound("");
+                            openImMsgDTO1.setOfflinePushInfo(offlinePushInfo);
+                            openIMService.openIMSendMsg(openImMsgDTO1);
+                        }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+                            imService.sendMsg(msgDTO2);
+                        }
+
                     }
                 }catch (Exception e){
                     log.error("随访失败!订单编号: {}",order.getOrderId(),e);

+ 3 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsFollowReportServiceImpl.java

@@ -54,6 +54,9 @@ public class FsFollowReportServiceImpl implements IFsFollowReportService
     private FsPrescribeMapper fsPrescribeMapper;
 
     @Autowired
+    private IImService imService;
+//    @Autowired
+//    SmsServiceImpl smsService;
     @Lazy
     SmsServiceImpl smsService;
     Logger logger= LoggerFactory.getLogger(getClass());

+ 38 - 34
fs-service/src/main/java/com/fs/his/service/impl/FsFollowServiceImpl.java

@@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSON;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fs.common.annotation.Log;
+import com.fs.common.enums.ImTypeEnum;
 import com.fs.common.utils.DateUtils;
 import com.fs.his.domain.FsFollowTemp;
 import com.fs.his.domain.FsPackageOrder;
@@ -20,6 +21,7 @@ import com.fs.his.param.FsFollowParam;
 import com.fs.his.param.FsStoreOrderParam;
 import com.fs.his.vo.*;
 import com.fs.im.config.IMConfig;
+import com.fs.im.config.ImTypeConfig;
 import com.fs.im.dto.*;
 import com.fs.im.service.IImService;
 import com.fs.im.service.OpenIMService;
@@ -169,17 +171,17 @@ public class FsFollowServiceImpl implements IFsFollowService
             fsFollow.setFormJson(fsFollowTemp.getFormJson());
             fsFollow.setCreateTime(DateUtils.getNowDate());
             int i = fsFollowMapper.insertFsFollow(fsFollow);
-            //MsgDTO msgDTO=new MsgDTO();
+            MsgDTO msgDTO=new MsgDTO();
             MsgCustomDTO customDTO=new MsgCustomDTO();
             customDTO.setType("follow");
             customDTO.setOrderType(2);
             customDTO.setFollowId(fsFollow.getFollowId().toString());
             customDTO.setOrderId(fsFollow.getPackageOrderId().toString());
             customDTO.setImType(2);
-            //msgDTO.setCloudCustomData(JSONUtil.toJsonStr(customDTO));
+            msgDTO.setCloudCustomData(JSONUtil.toJsonStr(customDTO));
 
-            //msgDTO.setFrom_Account("D-"+fsFollow.getDoctorId());
-            //msgDTO.setTo_Account("U-"+fsFollow.getUserId());
+            msgDTO.setFrom_Account("D-"+fsFollow.getDoctorId());
+            msgDTO.setTo_Account("U-"+fsFollow.getUserId());
             List<MsgDataDTO> msgs=new ArrayList<>();
             MsgDataDTO msg=new MsgDataDTO();
             String ext= JSONUtil.toJsonStr(fsFollow);
@@ -187,11 +189,15 @@ public class FsFollowServiceImpl implements IFsFollowService
             msg.setMsgContent(new MsgDataFormatDTO("follow",ext,followId));
             msg.setMsgType("TIMCustomElem");//TIMCustomElem
             msgs.add(msg);
-            //msgDTO.setMsgBody(msgs);
-            //MsgResponseDTO msgResponseDTO = imService.sendMsg(msgDTO);
-            ObjectMapper objectMapper = new ObjectMapper();
-            String ex = objectMapper.writeValueAsString(customDTO);
-            OpenImResponseDTO follow = openIMService.sendUtil("D"+fsFollow.getDoctorId(), "U"+fsFollow.getUserId(), 110, "follow", "", "", followId, "",ex);
+            msgDTO.setMsgBody(msgs);
+            if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+                ObjectMapper objectMapper = new ObjectMapper();
+                String ex = objectMapper.writeValueAsString(customDTO);
+                OpenImResponseDTO follow = openIMService.sendUtil("D"+fsFollow.getDoctorId(), "U"+fsFollow.getUserId(), 110, "follow", "", "", followId, "",ex);
+                logger.info("发送随访"+follow);
+            }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+                MsgResponseDTO msgResponseDTO = imService.sendMsg(msgDTO);
+            }
             /*OpenImMsgDTO openImMsgDTO = new OpenImMsgDTO();
             openImMsgDTO.setSendID("D"+fsFollow.getDoctorId().toString());
             openImMsgDTO.setRecvID("U"+fsFollow.getUserId().toString());
@@ -203,9 +209,6 @@ public class FsFollowServiceImpl implements IFsFollowService
             openImMsgDTO.setContent(content);
             //openImMsgDTO.setEx(customDTO);
             OpenImResponseDTO openImResponseDTO = openIMService.openIMSendMsg(openImMsgDTO);*/
-
-            logger.info("发送随访"+follow);
-
             MsgDTO msgDTO2=new MsgDTO();
             msgDTO2.setCloudCustomData(JSONUtil.toJsonStr(customDTO));
 
@@ -218,28 +221,29 @@ public class FsFollowServiceImpl implements IFsFollowService
             msg2.setMsgType("TIMTextElem");//TIMCustomElem
             msgs2.add(msg2);
             msgDTO2.setMsgBody(msgs2);
-
-            //MsgResponseDTO msgResponseDTO2 = imService.sendMsg(msgDTO2);
-            OpenImMsgDTO openImMsgDTO1 = new OpenImMsgDTO();
-            openImMsgDTO1.setSendID("D"+fsFollow.getDoctorId().toString());
-            openImMsgDTO1.setRecvID("U"+fsFollow.getUserId().toString());
-            openImMsgDTO1.setContentType(101);
-            openImMsgDTO1.setSenderPlatformID(5);
-            openImMsgDTO1.setSessionType(1);
-            OpenImMsgDTO.Content content1 = new OpenImMsgDTO.Content();
-            content1.setContent("尊敬的用户,为了您的健康,请认真填写随访单,以便医生随时了解您的用药情况,评估治疗效果。如果在用药中出现任何不适,可直接在对话框中描述您目前的情况,我将及时为您解答!");
-            openImMsgDTO1.setContent(content1);
-            //openImMsgDTO.setEx(customDTO);
-            OpenImMsgDTO.OfflinePushInfo offlinePushInfo = new OpenImMsgDTO.OfflinePushInfo();
-            offlinePushInfo.setDesc(content1.getContent());
-            String doctorNameByIds = fsDoctorMapper.selectDoctorNameByIds(fsFollow.getDoctorId().toString());
-            offlinePushInfo.setTitle(doctorNameByIds);
-            offlinePushInfo.setIOSBadgeCount(true);
-            offlinePushInfo.setIOSPushSound("");
-            openImMsgDTO1.setOfflinePushInfo(offlinePushInfo);
-            OpenImResponseDTO openImResponseDTO1 = openIMService.openIMSendMsg(openImMsgDTO1);
-
-            logger.info("发送随访"+openImResponseDTO1);
+            if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+                OpenImMsgDTO openImMsgDTO1 = new OpenImMsgDTO();
+                openImMsgDTO1.setSendID("D"+fsFollow.getDoctorId().toString());
+                openImMsgDTO1.setRecvID("U"+fsFollow.getUserId().toString());
+                openImMsgDTO1.setContentType(101);
+                openImMsgDTO1.setSenderPlatformID(5);
+                openImMsgDTO1.setSessionType(1);
+                OpenImMsgDTO.Content content1 = new OpenImMsgDTO.Content();
+                content1.setContent("尊敬的用户,为了您的健康,请认真填写随访单,以便医生随时了解您的用药情况,评估治疗效果。如果在用药中出现任何不适,可直接在对话框中描述您目前的情况,我将及时为您解答!");
+                openImMsgDTO1.setContent(content1);
+                //openImMsgDTO.setEx(customDTO);
+                OpenImMsgDTO.OfflinePushInfo offlinePushInfo = new OpenImMsgDTO.OfflinePushInfo();
+                offlinePushInfo.setDesc(content1.getContent());
+                String doctorNameByIds = fsDoctorMapper.selectDoctorNameByIds(fsFollow.getDoctorId().toString());
+                offlinePushInfo.setTitle(doctorNameByIds);
+                offlinePushInfo.setIOSBadgeCount(true);
+                offlinePushInfo.setIOSPushSound("");
+                openImMsgDTO1.setOfflinePushInfo(offlinePushInfo);
+                OpenImResponseDTO openImResponseDTO1 = openIMService.openIMSendMsg(openImMsgDTO1);
+                logger.info("发送随访"+openImResponseDTO1);
+            }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+                MsgResponseDTO msgResponseDTO2 = imService.sendMsg(msgDTO2);
+            }
             if (i>0){
                 FsPackageOrder fsPackageOrder = new FsPackageOrder();
                 fsPackageOrder.setOrderId(order.getOrderId());

+ 1 - 1
fs-service/src/main/java/com/fs/his/service/impl/FsInquiryOrderMsgServiceImpl.java

@@ -67,8 +67,8 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
     private FsFollowReportMapper fsFollowReportMapper;
     @Autowired
     private FsDoctorMapper  doctorMapper;
+    @Lazy
     @Autowired
-            @Lazy
     SmsServiceImpl smsService;
     @Autowired
     FsUserMapper fsUserMapper;

+ 72 - 35
fs-service/src/main/java/com/fs/his/service/impl/FsInquiryOrderServiceImpl.java

@@ -14,8 +14,10 @@ import com.fs.common.constant.FsConstants;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
+import com.fs.common.enums.ImTypeEnum;
 import com.fs.common.exception.CustomException;
 import com.fs.common.service.impl.SmsServiceImpl;
+import com.fs.common.utils.CloudHostUtils;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.SecurityUtils;
 import com.fs.common.utils.StringUtils;
@@ -47,6 +49,7 @@ import com.fs.huifuPay.domain.HuiFuRefundResult;
 import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayRefundRequest;
 import com.fs.huifuPay.service.HuiFuService;
 import com.fs.im.config.IMConfig;
+import com.fs.im.config.ImTypeConfig;
 import com.fs.im.dto.*;
 import com.fs.im.service.IImService;
 import com.fs.im.service.OpenIMService;
@@ -659,6 +662,9 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
                     }
                 }
             }
+            if(param.getDoctorId()!=null){
+                order.setDoctorId(param.getDoctorId());
+            }
             List<FsPriceDTO> price = configDTO.getPrices().stream().filter(x -> x.getType().equals(param.getOrderType())).collect(Collectors.toList());
             if(price!=null&&price.size()==1){
                 order.setMoney(price.get(0).getPrice());
@@ -815,6 +821,17 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
             map.setPayTime(new Date());
             map.setTradeNo(tradeNo);
             fsInquiryOrderMapper.updateFsInquiryOrder(map);
+            // 木易华康特殊处理(支付成功医生自动接单)
+            if (CloudHostUtils.hasCloudHostName("木易华康")&&order.getDoctorId()!=null) {
+                Integer orderCount=fsInquiryOrderMapper.checkAcceptOrder(order.getDoctorId(),order.getUserId());
+                if(orderCount>0){
+                    return R.error("此医生正在为您服务,不能下单");
+                }
+                FsInquiryOrderReceiveParam fsInquiryOrderReceiveParam = new FsInquiryOrderReceiveParam();
+                fsInquiryOrderReceiveParam.setOrderId(order.getOrderId());
+                fsInquiryOrderReceiveParam.setDoctorId(order.getDoctorId());
+                receiveOrder(fsInquiryOrderReceiveParam);
+            }
             try {
                 FsUser fsUser = userMapper.selectFsUserByUserId(order.getUserId());
                 imService.addAccount(fsUser.getUserId(),fsUser.getAvatar(),fsUser.getNickName());
@@ -937,34 +954,37 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
 
             }
         }
-        //MsgDTO msgDTO=new MsgDTO();
+        MsgDTO msgDTO=new MsgDTO();
         MsgCustomDTO customDTO=new MsgCustomDTO();
         customDTO.setType("startInquiry");
         customDTO.setOrderType(order.getOrderType());
         customDTO.setOrderId(order.getOrderId().toString());
         customDTO.setImType(1);
-        /*msgDTO.setCloudCustomData(JSONUtil.toJsonStr(customDTO));
+        msgDTO.setCloudCustomData(JSONUtil.toJsonStr(customDTO));
         msgDTO.setFrom_Account("D-"+param.getDoctorId());
-        msgDTO.setTo_Account("U-"+order.getUserId());*/
-        /*List<MsgDataDTO> msgs=new ArrayList<>();
+        msgDTO.setTo_Account("U-"+order.getUserId());
+        List<MsgDataDTO> msgs=new ArrayList<>();
         MsgDataDTO msg=new MsgDataDTO();
-        msg.setMsgType("TIMCustomElem");*/
+        msg.setMsgType("TIMCustomElem");
         FsDoctor doctor=doctorMapper.selectFsDoctorByDoctorId(param.getDoctorId());
         String doc="医生";
         if (doctor.getDeptId()!=null&&doctor.getDeptId().compareTo(39L)==0){
             doc="药师";
         }
-        /*InquiryOrderMsgDTO inquiryOrderMsgDTO=new InquiryOrderMsgDTO();
+        InquiryOrderMsgDTO inquiryOrderMsgDTO=new InquiryOrderMsgDTO();
         inquiryOrderMsgDTO.setTitle(doctor.getDoctorName()+doc+"为您服务");
         String ext= JSONUtil.toJsonStr(inquiryOrderMsgDTO);
         msg.setMsgContent(new MsgDataFormatDTO("startInquiry",ext,order.getOrderId().toString()));
         msgs.add(msg);
-        msgDTO.setMsgBody(msgs);*/
-        //imService.sendMsg(msgDTO);
+        msgDTO.setMsgBody(msgs);
         ObjectMapper objectMapper = new ObjectMapper();
-        String ex = objectMapper.writeValueAsString(customDTO);
-        openIMService.sendUtil("D"+param.getDoctorId(),"U"+order.getUserId(),110,"startInquiry","",doctor.getDoctorName()+doc+"为您服务","","","");
-        /*OpenImMsgDTO openImMsgDTO = new OpenImMsgDTO();
+        if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+            String ex = objectMapper.writeValueAsString(customDTO);
+            openIMService.sendUtil("D"+param.getDoctorId(),"U"+order.getUserId(),110,"startInquiry","",doctor.getDoctorName()+doc+"为您服务","","","");
+        }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+            imService.sendMsg(msgDTO);
+        }
+                /*OpenImMsgDTO openImMsgDTO = new OpenImMsgDTO();
         openImMsgDTO.setSendID("D"+param.getDoctorId().toString());
         openImMsgDTO.setRecvID("U"+order.getUserId().toString());
         openImMsgDTO.setContentType(110);
@@ -992,11 +1012,13 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
             msg1.setMsgContent(dto1);
             msgs1.add(msg1);
             msgDTO1.setMsgBody(msgs1);
-            //imService.sendMsg(msgDTO1);
 
-            ObjectMapper objectMapper1 = new ObjectMapper();
-            String ex1 = objectMapper.writeValueAsString(customDTO1);
-            openIMService.sendUtil("D"+param.getDoctorId(),"U"+order.getUserId(),110,"startInquiry","","您好,我是芸医汇互联网医院执业药师,请问您有什么问题想咨询?","","",ex1);
+            if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+                String ex1 = objectMapper.writeValueAsString(customDTO1);
+                openIMService.sendUtil("D"+param.getDoctorId(),"U"+order.getUserId(),110,"startInquiry","","您好,我是芸医汇互联网医院执业药师,请问您有什么问题想咨询?","","",ex1);
+            }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+                imService.sendMsg(msgDTO1);
+            }
             /*OpenImMsgDTO openImMsgDTO1 = new OpenImMsgDTO();
             openImMsgDTO1.setSendID("D"+param.getDoctorId().toString());
             openImMsgDTO1.setRecvID("U"+order.getUserId().toString());
@@ -1124,10 +1146,15 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
         msg.setMsgContent(new MsgDataFormatDTO("startInquiry",ext,order.getOrderId().toString()));
         msgs.add(msg);
         msgDTO.setMsgBody(msgs);
-        //imService.sendMsg(msgDTO);
         ObjectMapper objectMapper = new ObjectMapper();
-        String ex = objectMapper.writeValueAsString(customDTO);
-        openIMService.sendUtil("D"+order.getDoctorId(),"U"+order.getUserId(),110,"startInquiry","",doctor.getDoctorName()+doc+"为您服务","","",ex);
+
+        if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+            String ex = objectMapper.writeValueAsString(customDTO);
+            openIMService.sendUtil("D"+order.getDoctorId(),"U"+order.getUserId(),110,"startInquiry","",doctor.getDoctorName()+doc+"为您服务","","",ex);
+        }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+            imService.sendMsg(msgDTO);
+        }
+        //imService.sendMsg(msgDTO);
         /*OpenImMsgDTO openImMsgDTO = new OpenImMsgDTO();
         openImMsgDTO.setSendID("D"+order.getDoctorId().toString());
         openImMsgDTO.setRecvID("U"+order.getUserId().toString());
@@ -1157,11 +1184,13 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
             msgs1.add(msg1);
             msgDTO1.setMsgBody(msgs1);
             //imService.sendMsg(msgDTO1);
-
-            ObjectMapper objectMapper1 = new ObjectMapper();
-            String ex1 = objectMapper.writeValueAsString(customDTO1);
-            openIMService.sendUtil("D"+param.getDoctorId(),"U"+order.getUserId(),110,"startInquiry","","您好,我是芸医汇互联网医院执业药师,请问您有什么问题想咨询?","","",ex1);
-           /* OpenImMsgDTO openImMsgDTO1 = new OpenImMsgDTO();
+            if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+                String ex1 = objectMapper.writeValueAsString(customDTO1);
+                openIMService.sendUtil("D"+param.getDoctorId(),"U"+order.getUserId(),110,"startInquiry","","您好,我是芸医汇互联网医院执业药师,请问您有什么问题想咨询?","","",ex1);
+            }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+                imService.sendMsg(msgDTO1);
+            }
+            /* OpenImMsgDTO openImMsgDTO1 = new OpenImMsgDTO();
             openImMsgDTO1.setSendID("D"+order.getDoctorId().toString());
             openImMsgDTO1.setRecvID("U"+order.getUserId().toString());
             openImMsgDTO1.setContentType(110);
@@ -1310,9 +1339,12 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
         msgDTO.setMsgBody(msgs);
         //imService.sendMsg(msgDTO);
         ObjectMapper objectMapper = new ObjectMapper();
-        String ex = objectMapper.writeValueAsString(customDTO);
-        openIMService.sendUtil("D"+order.getDoctorId(),"U"+order.getUserId(),110,"finishInquiry","","医生完成订单","","",ex);
-
+        if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+            String ex = objectMapper.writeValueAsString(customDTO);
+            openIMService.sendUtil("D"+order.getDoctorId(),"U"+order.getUserId(),110,"finishInquiry","","医生完成订单","","",ex);
+        }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+            imService.sendMsg(msgDTO);
+        }
         //发送给医生
 //        MsgDTO msgDTO1=new MsgDTO();
 //        MsgCustomDTO customDTO1=new MsgCustomDTO();
@@ -1381,11 +1413,13 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
         msg.setMsgContent(new MsgDataFormatDTO("finishInquiry",ext,order.getOrderId().toString()));
         msgs.add(msg);
         msgDTO.setMsgBody(msgs);
-        //imService.sendMsg(msgDTO);
-        ObjectMapper objectMapper = new ObjectMapper();
-        String ex = objectMapper.writeValueAsString(customDTO);
-        openIMService.sendUtil("D"+order.getDoctorId(),"U"+order.getUserId(),110,"finishInquiry","","医生完成订单","","",ex);
-
+        if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+            ObjectMapper objectMapper = new ObjectMapper();
+            String ex = objectMapper.writeValueAsString(customDTO);
+            openIMService.sendUtil("D"+order.getDoctorId(),"U"+order.getUserId(),110,"finishInquiry","","医生完成订单","","",ex);
+        }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+            imService.sendMsg(msgDTO);
+        }
         redisTemplate.delete("DrugReport:doctorId:" + order.getDoctorId() + ":userId:" + order.getUserId());
         return R.ok();
     }
@@ -1690,10 +1724,13 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
         msgs.add(msg);
         msgDTO.setMsgBody(msgs);
         //imService.sendMsg(msgDTO);
-
-        ObjectMapper objectMapper = new ObjectMapper();
-        String ex = objectMapper.writeValueAsString(customDTO);
-        openIMService.sendUtil("D"+order.getDoctorId(),"U"+order.getUserId(),110,"startInquiry","1","为您服务","","",ex);
+        if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+            ObjectMapper objectMapper = new ObjectMapper();
+            String ex = objectMapper.writeValueAsString(customDTO);
+            openIMService.sendUtil("D"+order.getDoctorId(),"U"+order.getUserId(),110,"startInquiry","1","为您服务","","",ex);
+        }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+            imService.sendMsg(msgDTO);
+        }
 
         return "OK";
     }

+ 14 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsPrescribeServiceImpl.java

@@ -952,4 +952,18 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
             pen.drawString(value,x,y);
         }
     }
+
+    @Override
+    public List<FsPrescribeListDVO> selectFsPrescribeListDVOByCompanyUser(FsPrescribeListDCompanyParam param) {
+        List<FsPrescribeListDVO> list=fsPrescribeMapper.selectFsPrescribeListUVOByCompanyUser(param);
+        for(FsPrescribeListDVO vo:list){
+            FsPrescribeDrug map=new FsPrescribeDrug();
+            map.setPrescribeId(vo.getPrescribeId());
+            vo.setDrugs(fsPrescribeDrugMapper.selectFsPrescribeDrugList(map));
+        }
+        return list;
+
+
+    }
+
 }

+ 50 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java

@@ -49,6 +49,7 @@ import com.fs.hisStore.domain.FsStoreOrderScrm;
 import com.fs.hisStore.domain.FsStorePaymentScrm;
 import com.fs.hisStore.mapper.FsStoreOrderScrmMapper;
 import com.fs.hisStore.mapper.FsStorePaymentScrmMapper;
+import com.fs.hisStore.service.IFsStoreOrderLogsScrmService;
 import com.fs.hisStore.service.IFsStoreOrderScrmService;
 import com.fs.hisapi.domain.ApiResponse;
 import com.fs.hisapi.param.CreateOrderParam;
@@ -1568,6 +1569,55 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
         }
 
     }
+    @Autowired
+    FsStoreOrderScrmMapper storeOrderScrmMapper;
+
+
+    @Autowired
+    IFsStoreOrderLogsScrmService iFsStoreOrderLogsScrmService;
+    @Override
+    public void deliveryOrderScrm(String orderCode, String deliveryId, String deliverCode, String deliverName) {
+        FsStoreOrderScrm order = fsStoreOrderMapper.selectFsStoreOrderScrmByOrderCode(orderCode);
+        if (order != null && order.getStatus() == 1) {
+            FsExpress express = expressService.selectFsExpressByOmsCode(deliverCode);
+            if (express != null) {
+                order.setDeliveryName(deliverName);
+                order.setDeliveryCode(express.getCode());
+            }
+            order.setStatus(2);
+            order.setDeliverySn(deliveryId);
+            order.setDeliverySendTime(DateUtils.getNowDate());
+            storeOrderScrmMapper.updateFsStoreOrder(order);
+            iFsStoreOrderLogsScrmService.create(order.getId(), FsStoreOrderLogEnum.DELIVERY_GOODS.getValue(), FsStoreOrderLogEnum.DELIVERY_GOODS.getDesc());
+            if (order.getCompanyId() != null && order.getCompanyId() > 0) {
+                companyService.subtractCompanyMoneyScrm(order);
+            }
+
+            FsStore store = fsStoreMapper.selectFsStoreByStoreId(order.getStoreId());
+            //订阅物流回调
+            String lastFourNumber = "";
+            if (order.getDeliveryCode().equals(ShipperCodeEnum.SF.getValue())) {
+                if (store != null && store.getSendPhone() != null) {
+                    lastFourNumber = store.getSendPhone();
+                } else {
+                    lastFourNumber = order.getUserPhone();
+                }
+                if (lastFourNumber.length() == 11) {
+                    lastFourNumber = StrUtil.sub(lastFourNumber, lastFourNumber.length(), -4);
+                }
+            }
+            expressService.subscribeEspress(order.getOrderCode(), order.getDeliveryCode(), order.getDeliverySn(), lastFourNumber);
+
+
+        }
+
+    }
+
+    @Override
+    public FsStoreOrderScrm selectFsStoreOrderScrmByOrderCode(String soId) {
+        return fsStoreOrderMapper.selectFsStoreOrderScrmByOrderCode(soId);
+    }
+
 
     @Override
     @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)

+ 6 - 4
fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java

@@ -22,6 +22,7 @@ import com.fs.common.core.domain.ResponseResult;
 import com.fs.common.core.domain.entity.SysDictData;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.core.redis.RedisCache;
+import com.fs.common.enums.ImTypeEnum;
 import com.fs.common.param.LoginMaWxParam;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.DictUtils;
@@ -58,6 +59,7 @@ import com.fs.his.vo.FsUserVO;
 import com.fs.his.vo.FsUserExportListVO;
 import com.fs.his.vo.FsUserFollowDoctorVO;
 import com.fs.his.vo.UserVo;
+import com.fs.im.config.ImTypeConfig;
 import com.fs.im.service.OpenIMService;
 import com.fs.hisStore.domain.FsStoreOrderScrm;
 import com.fs.hisStore.domain.FsUserBillScrm;
@@ -97,7 +99,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import static com.fs.his.utils.PhoneUtil.*;
 import static com.fs.hisStore.enums.BillDetailEnum.CATEGORY_1;
-import static com.fs.his.utils.PhoneUtil.*;
 import static com.fs.hisStore.enums.BillDetailEnum.CATEGORY_3;
 
 /**
@@ -316,7 +317,6 @@ public class FsUserServiceImpl implements IFsUserService {
     public List<FsUserExportListVO> selectFsUserExportListVO(FsUserParam fsUser) {
         return fsUserMapper.selectFsUserExportListVO(fsUser);
     }
-
     @Autowired
     private FsUserIntegralLogsMapper integralLogsMapper;
 
@@ -1092,7 +1092,9 @@ public class FsUserServiceImpl implements IFsUserService {
 //        }
 
         // 与im账号绑定
-        openIMService.checkAndImportFriend(param.getCompanyUserId(), String.valueOf(param.getUserId()));
+        if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+            openIMService.checkAndImportFriend(param.getCompanyUserId(), String.valueOf(param.getUserId()));
+        }
 
         //如果是设置了需要进入小黑屋,则需要返回提示,否则正常返回
         if (isDefaultBlack == 1) {
@@ -1193,7 +1195,7 @@ public class FsUserServiceImpl implements IFsUserService {
 
         // 判断是否是管理员
         CompanyUser companyUser = companyUserMapper.selectCompanyUserById(param.getUserId());
-        if (companyUser != null && companyUser.isAdmin()) {
+        if (companyUser != null && companyUser.isAdmin()){
             param.setUserId(0L);
             param.setCompanyId(companyUser.getCompanyId());
         }

+ 64 - 4
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreAfterSalesScrmServiceImpl.java

@@ -13,7 +13,9 @@ import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.StringUtils;
+import com.fs.common.utils.spring.SpringUtils;
 import com.fs.company.service.ICompanyService;
+import com.fs.config.cloud.CloudHostProper;
 import com.fs.core.config.WxPayProperties;
 import com.fs.core.utils.OrderCodeUtils;
 import com.fs.erp.constant.AfterSalesOrderStatusEnum;
@@ -190,6 +192,9 @@ public class FsStoreAfterSalesScrmServiceImpl implements IFsStoreAfterSalesScrmS
     @Autowired
     private IFsStoreOrderLogsService fsStoreOrderLogsService;
 
+    @Autowired
+    private CloudHostProper cloudHostProper;
+
     /**
      * 查询售后记录
      *
@@ -644,6 +649,8 @@ public class FsStoreAfterSalesScrmServiceImpl implements IFsStoreAfterSalesScrmS
 //
 //        return R.ok("操作成功");
 //    }
+
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public R refundMoney(FsStoreAfterSalesRefundParam param) {
@@ -654,6 +661,9 @@ public class FsStoreAfterSalesScrmServiceImpl implements IFsStoreAfterSalesScrmS
         if (!storeAfterSales.getStatus().equals(AfterStatusEnum.STATUS_3.getValue())) {
             throw new CustomException("非法操作");
         }
+
+
+
         //审核通过
         storeAfterSales.setRefundAmount(param.getRefundAmount());
         storeAfterSales.setStatus(4);
@@ -661,6 +671,26 @@ public class FsStoreAfterSalesScrmServiceImpl implements IFsStoreAfterSalesScrmS
         fsStoreAfterSalesMapper.updateFsStoreAfterSales(storeAfterSales);
 
         FsStoreOrderScrm order = orderService.selectFsStoreOrderByOrderCode(storeAfterSales.getOrderCode());
+
+        if (("益善缘".equals(cloudHostProper.getCompanyName()))) {
+            FsJstAftersalePush fsJstAftersalePush = new FsJstAftersalePush();
+            fsJstAftersalePush.setOrderId(order.getOrderCode());
+            fsJstAftersalePush.setTaskStatus(TaskStatusEnum.PENDING.getCode());
+            fsJstAftersalePush.setType(String.valueOf(AfterSalesOrderStatusEnum.SUCCESS.getIndex()));
+            fsJstAftersalePush.setRetryCount(0);
+            fsJstAftersalePush.setAfterSaleId(String.valueOf(storeAfterSales.getId()));
+            fsJstAftersalePushMapper.insert(fsJstAftersalePush);
+
+            // 售后单改成已确认
+            FsJstAftersalePush aftersaleConfirm = new FsJstAftersalePush();
+            aftersaleConfirm.setOrderId(order.getOrderCode());
+            aftersaleConfirm.setTaskStatus(TaskStatusEnum.PENDING.getCode());
+            aftersaleConfirm.setType(String.valueOf(AfterSalesOrderStatusEnum.CONFIRM.getIndex()));
+            aftersaleConfirm.setRetryCount(0);
+            aftersaleConfirm.setAfterSaleId(String.valueOf(storeAfterSales.getId()));
+            fsJstAftersalePushMapper.insert(aftersaleConfirm);
+        }
+
         order.setStatus(-2);
         order.setRefundPrice(storeAfterSales.getRefundAmount());
         order.setRefundStatus(OrderInfoEnum.REFUND_STATUS_2.getValue());
@@ -737,10 +767,24 @@ public class FsStoreAfterSalesScrmServiceImpl implements IFsStoreAfterSalesScrmS
                             return R.error("退款请求失败"+e.getErrCodeDes());
                         }
                     }else if (payment.getPayMode()!=null&&payment.getPayMode().equals("hf")){
+                        String huifuId="";
+                        FsHfpayConfigMapper fsHfpayConfigMapper = SpringUtils.getBean(FsHfpayConfigMapper.class);
+                        if (payment.getAppId() != null) {
+                            FsHfpayConfig fsHfpayConfig = fsHfpayConfigMapper.selectByAppId(payment.getAppId());
+                            huifuId = fsHfpayConfig.getHuifuId();
+                        } else {
+                            if (("益善缘".equals(cloudHostProper.getCompanyName()))) {
+
+                                FsHfpayConfig fsPayConfig2 = fsHfpayConfigMapper.selectByAppId("wx0d1a3dd485268521");
+                                huifuId = fsPayConfig2.getHuifuId();
+                            }else {
+                                huifuId=fsPayConfig.getHuifuId();
+                            }
+                        }
                         V2TradePaymentScanpayRefundRequest request = new V2TradePaymentScanpayRefundRequest();
                         DecimalFormat df = new DecimalFormat("0.00");
                         request.setOrgHfSeqId(payment.getTradeNo());
-                        request.setHuifuId(fsPayConfig.getHuifuId());
+                        request.setHuifuId(huifuId);
                         request.setOrdAmt(df.format(refundAmount));
                         request.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(payment.getCreateTime()));
                         request.setReqSeqId("refund-"+payment.getPayCode());
@@ -1366,11 +1410,12 @@ public class FsStoreAfterSalesScrmServiceImpl implements IFsStoreAfterSalesScrmS
         }
         if (payments != null && payments.size() > 0) {
             FsStorePaymentScrm payment = payments.get(0);
-            String json = configService.selectConfigByKey("his.pay");
+            String json = configService.selectConfigByKey("store.pay");
+            FsPayConfigScrm fsPayConfig = JSON.parseObject(json, FsPayConfigScrm.class);
             if (payment.getPayMode().equals("wx")) {
                 WxPayConfig payConfig = new WxPayConfig();
-                SysConfig sysConfig = sysConfigMapper.selectConfigByConfigKey("his.pay");
-                FsPayConfig fsPayConfig = new Gson().fromJson(sysConfig.getConfigValue(), FsPayConfig.class);
+                //SysConfig sysConfig = sysConfigMapper.selectConfigByConfigKey("his.pay");
+                //FsPayConfig fsPayConfig = new Gson().fromJson(sysConfig.getConfigValue(), FsPayConfig.class);
                 payConfig.setAppId(fsPayConfig.getAppId());
                 payConfig.setMchId(fsPayConfig.getWxMchId());
                 payConfig.setMchKey(fsPayConfig.getWxMchKey());
@@ -1442,8 +1487,23 @@ public class FsStoreAfterSalesScrmServiceImpl implements IFsStoreAfterSalesScrmS
                     throw new CustomException("退款请求失败" + result.getRetMsg());
                 }
             } else if (payment.getPayMode().equals("hf")) {
+                String huifuId="";
+                FsHfpayConfigMapper fsHfpayConfigMapper = SpringUtils.getBean(FsHfpayConfigMapper.class);
+                if (payment.getAppId() != null) {
+                    FsHfpayConfig fsHfpayConfig = fsHfpayConfigMapper.selectByAppId(payment.getAppId());
+                    huifuId = fsHfpayConfig.getHuifuId();
+                } else {
+                    if (("益善缘".equals(cloudHostProper.getCompanyName()))) {
+
+                        FsHfpayConfig fsPayConfig2 = fsHfpayConfigMapper.selectByAppId("wx0d1a3dd485268521");
+                        huifuId = fsPayConfig2.getHuifuId();
+                    }else {
+                        huifuId=fsPayConfig.getHuifuId();
+                    }
+                }
                 V2TradePaymentScanpayRefundRequest request = new V2TradePaymentScanpayRefundRequest();
                 request.setOrdAmt(payment.getPayMoney().toString());
+                request.setHuifuId(huifuId);
                 request.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(payment.getCreateTime()));
                 request.setReqSeqId("refund-" + payment.getPayCode());
                 Map<String, Object> extendInfoMap = new HashMap<>();

+ 8 - 3
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreProductScrmServiceImpl.java

@@ -370,9 +370,14 @@ public class FsStoreProductScrmServiceImpl implements IFsStoreProductScrmService
         }
 
         if(param.getProductId() != null && param.getProductId() > 0){
-            //对已上架的商品进行修改需要重新审核
-            if(1 == product.getIsShow() && "1".equals(product.getIsAudit())){
-                product.setIsAudit("0");
+            //对已上架的商品进行修改需要重新审核(益寿缘商城商品无需审核)
+            if(!("益善缘".equals(cloudHostProper.getCompanyName()))){
+                if(1 == product.getIsShow() && "1".equals(product.getIsAudit())){
+                    product.setIsAudit("0");
+                }
+            } else{
+                //默认已审核
+                product.setIsAudit("1");
             }
             fsStoreProductMapper.updateFsStoreProduct(product);
             if (param.getSpecType().equals(0)) {

+ 22 - 0
fs-service/src/main/java/com/fs/im/config/ImTypeConfig.java

@@ -0,0 +1,22 @@
+package com.fs.im.config;
+
+import com.fs.common.enums.ImTypeEnum;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Component
+@ConfigurationProperties(prefix = "im")
+@Data
+public class ImTypeConfig
+{
+    private ImTypeEnum type;
+    public static ImTypeEnum IMTYPE;
+    @PostConstruct
+    public void init() {
+//        PREFIX = this.prefix;
+        IMTYPE = this.type;
+    }
+}

+ 2 - 0
fs-service/src/main/java/com/fs/im/service/OpenIMService.java

@@ -81,4 +81,6 @@ public interface OpenIMService {
      */
     OpenImResponseDTO batchUrgeCourse(BatchUrgeCourseDTO batchUrgeCourseDTO, FsImMsgSendLog fsImMsgSendLog, String url) throws JsonProcessingException;
 
+    OpenImResponseDTO sendInquiryUtil(String sendID, String recvID, Integer contentType, String payloadData,String inquiryName,String type,Long companyId,Long companyUserId,String doctorId);
+
 }

+ 65 - 1
fs-service/src/main/java/com/fs/im/service/impl/OpenIMServiceImpl.java

@@ -455,7 +455,8 @@ public class OpenIMServiceImpl implements OpenIMService {
         for (UserInfo user : users) {
             updateUserInfo.setUserID(user.getUserID());
             updateUserInfo.setNickname(companyUser.getNickName());
-            updateUserInfo.setFaceURL(Optional.ofNullable(user.getFaceURL()).orElse(""));
+            //updateUserInfo.setFaceURL(Optional.ofNullable(user.getFaceURL()).orElse("http://company.muyi88.com/profile/avatar/2025/09/10/35ed3564-aad9-4580-a746-5da01e24d2ab.jpeg"));
+            updateUserInfo.setFaceURL("http://company.muyi88.com/prod-api/profile/avatar/2025/04/08/aa418999-6738-492d-9856-491916f714d9.jpeg");
             updateUserInfo.setEx(Optional.ofNullable(user.getEx()).orElse(""));
 
             Map<String, Object> bodyMap = new HashMap<>();
@@ -1511,4 +1512,67 @@ public class OpenIMServiceImpl implements OpenIMService {
         OpenImResponseDTO responseDTO= JSONUtil.toBean(body,OpenImResponseDTO.class);
         return responseDTO;
     }
+    @Override
+    public OpenImResponseDTO sendInquiryUtil(String sendID, String recvID, Integer contentType, String payloadData, String inquiryName, String type,Long companyId,Long companyUserId,String doctorId) {
+        try {
+            OpenImMsgDTO.OfflinePushInfo offlinePushInfo = new OpenImMsgDTO.OfflinePushInfo();
+            ObjectMapper objectMapper = new ObjectMapper();
+            OpenImMsgDTO openImMsgDTO = new OpenImMsgDTO();
+            if (sendID.startsWith("C")){
+                CompanyUser company = companyUserMapper.selectCompanyUserByUserId(Long.parseLong(sendID.replace("C", "")));
+                if (null!=company){
+                    offlinePushInfo.setTitle(StringUtils.isNotEmpty(company.getImNickName())?company.getImNickName():company.getNickName());
+                    openImMsgDTO.setSenderFaceURL(company.getAvatar());
+                }
+            }
+            //accountCheck(recvID.toString(),"1");
+            openImMsgDTO.setSendID(sendID);
+            openImMsgDTO.setRecvID(recvID);
+            openImMsgDTO.setContentType(contentType);
+            openImMsgDTO.setSenderPlatformID(5);
+            openImMsgDTO.setSessionType(1);
+
+            OpenImMsgDTO.Content content = new OpenImMsgDTO.Content();
+            //content.setContent(ext);
+            PayloadDTO payload = new PayloadDTO();
+            payload.setDescription("inquirySelect");
+            payload.setData(payloadData);
+            PayloadDTO.Extension extension = new PayloadDTO.Extension();
+            //extension.setDiagnose(diagnose);
+            if (StringUtils.isNotEmpty(inquiryName)){
+                extension.setTitle(inquiryName);
+            }
+            if (StringUtils.isNotEmpty(type)){
+                extension.setType(type);
+            }
+            extension.setDoctorId(Long.parseLong(doctorId));
+            extension.setCompanyId(companyId);
+            extension.setCompanyUserId(companyUserId);
+            payload.setExtension(extension);
+            OpenImMsgDTO.ImData imData = new OpenImMsgDTO.ImData();
+
+            imData.setPayload(payload);
+
+            String imJson = objectMapper.writeValueAsString(imData);
+            content.setData(imJson);
+            openImMsgDTO.setContent(content);
+            if (contentType == 101){
+                content.setContent(inquiryName);
+            }
+            //cn.hutool.json.JSONObject jsonObject = new cn.hutool.json.JSONObject(openImMsgDTO);
+
+            //openImMsgDTO.setEx(payload);
+
+            offlinePushInfo.setDesc(inquiryName);
+
+            offlinePushInfo.setIOSBadgeCount(true);
+            offlinePushInfo.setIOSPushSound("");
+            openImMsgDTO.setOfflinePushInfo(offlinePushInfo);
+            OpenImResponseDTO openImResponseDTO = openIMSendMsg(openImMsgDTO);
+            return openImResponseDTO;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
 }

+ 5 - 0
fs-service/src/main/java/com/fs/qw/mapper/QwWatchLogMapper.java

@@ -77,6 +77,7 @@ public interface QwWatchLogMapper extends BaseMapper<QwWatchLog>{
             "    COUNT(CASE WHEN qec.`level` = 2 THEN 1 END) AS B,\n" +
             "    COUNT(CASE WHEN qec.`level` = 3 THEN 1 END) AS C,\n" +
             "    COUNT(CASE WHEN qec.`level` = 4 THEN 1 END) AS D,\n" +
+            "    COUNT(CASE WHEN qec.`level` = 5 THEN 1 END) AS E,\n" +
             "    COUNT(CASE WHEN qec.fs_user_id IS NOT NULL THEN 1 END) AS sign,\n" +
             "    COUNT(CASE WHEN qec.`status` =3 THEN 1 END) AS los,\n" +
             "    COUNT(CASE WHEN qec.`status` IN (4, 5,6) THEN 1 END) AS del\n" +
@@ -84,11 +85,15 @@ public interface QwWatchLogMapper extends BaseMapper<QwWatchLog>{
             "    qw_external_contact qec\n" +
             "JOIN\n" +
             "    qw_user qu ON qec.qw_user_id = qu.id \n" +
+            "left join company_user cu on qec.company_user_id = cu.user_id "+
             "WHERE\n" +
             "    DATE(qec.create_time) &gt;= DATE(#{sTime}) and  DATE(qec.create_time) &lt;= DATE(#{eTime}) and qec.company_id =#{companyId} " +
             "<if test ='nickName !=null and nickName!=\"\"'>\n" +
             "   and qu.qw_user_name like concat( #{nickName}, '%')\n" +
             "</if>" +
+            "<if test ='deptId !=null and deptId!=\"\"'>\n" +
+            "   and cu.dept_id = #{deptId}\n" +
+            "</if>" +
             "<if test ='ids !=null and ids!=\"\"'>\n" +
             "   and qec.qw_user_id in (${ids})\n" +
             "</if>" +

+ 1 - 0
fs-service/src/main/java/com/fs/qw/param/QwWatchLogStatisticsListParam.java

@@ -33,6 +33,7 @@ public class QwWatchLogStatisticsListParam {
     private Long project;
     private Long courseId;
     private Long videoId;
+    private Long deptId;
 
     private Long pageNum;
     private Long pageSize;

+ 9 - 0
fs-service/src/main/java/com/fs/qw/service/impl/QwWatchLogServiceImpl.java

@@ -10,7 +10,9 @@ import com.fs.common.utils.DictUtils;
 import com.fs.company.cache.ICompanyCacheService;
 import com.fs.company.cache.ICompanyUserCacheService;
 import com.fs.company.domain.Company;
+import com.fs.company.domain.CompanyDept;
 import com.fs.company.domain.CompanyUser;
+import com.fs.company.mapper.CompanyDeptMapper;
 import com.fs.company.mapper.CompanyUserMapper;
 import com.fs.course.domain.FsUserCourse;
 import com.fs.course.domain.FsUserCourseVideo;
@@ -51,6 +53,9 @@ public class QwWatchLogServiceImpl extends ServiceImpl<QwWatchLogMapper, QwWatch
     @Autowired
     private CompanyUserMapper companyUserMapper;
 
+    @Autowired
+    private CompanyDeptMapper companyDeptMapper;
+
     @Autowired
     private IFsUserCourseCacheService fsUserCourseCacheService;
 
@@ -141,6 +146,10 @@ public class QwWatchLogServiceImpl extends ServiceImpl<QwWatchLogMapper, QwWatch
 
     @Override
     public TableDataInfo selectQwWatchLogStatisticsListVO(QwWatchLogStatisticsListParam param) {
+        CompanyDept companyDept = companyDeptMapper.selectCompanyDeptById(param.getDeptId());
+        if (ObjectUtils.isNotEmpty(companyDept)&&companyDept.getParentId()==0L){
+            param.setDeptId(null);
+        }
         TableDataInfo rspData = new TableDataInfo();
         rspData.setCode(HttpStatus.SUCCESS);
         rspData.setMsg("查询成功");

+ 2 - 0
fs-service/src/main/java/com/fs/qw/vo/QwWatchLogStatisticsListVO.java

@@ -43,6 +43,8 @@ public class QwWatchLogStatisticsListVO {
     private Long b;
     private Long c;
     private Long d;
+    private Long e;
+    private Long black;
     private Long los;//流失数
     private Long del;//删除数
 }

+ 0 - 1
fs-service/src/main/resources/application-common.yml

@@ -138,4 +138,3 @@ image:
   storage:
     local-path: C:\logoFile\logo.jpg
     server-path: C:\logoFile\logo.jpg
-

+ 1 - 1
fs-service/src/main/resources/application-config-myhk.yml

@@ -64,7 +64,7 @@ watch:
   password3: v9xsKuqn_$d2y
 
 fs :
-  commonApi: http://172.27.0.7:8010
+  commonApi: http://127.0.0.1:7771
 nuonuo:
   key: 10924508
   secret: A2EB20764D304D16

+ 3 - 0
fs-service/src/main/resources/application-dev.yml

@@ -165,6 +165,9 @@ openIM:
     url: web.im.ysya.top
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+#是否使用新im
+im:
+    type: OPENIM
 
 cloud_host:
     company_name: 弘珍医药

+ 5 - 0
fs-service/src/main/resources/application-druid-bjczwh.yml

@@ -149,5 +149,10 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+#是否使用新im
+im:
+    type: NONE
+

+ 3 - 0
fs-service/src/main/resources/application-druid-bly-test.yml

@@ -140,5 +140,8 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: false

+ 3 - 0
fs-service/src/main/resources/application-druid-bly.yml

@@ -140,5 +140,8 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: false

+ 5 - 0
fs-service/src/main/resources/application-druid-bnkc.yml

@@ -149,5 +149,10 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+

+ 5 - 0
fs-service/src/main/resources/application-druid-drk-test.yml

@@ -141,5 +141,10 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+

+ 6 - 0
fs-service/src/main/resources/application-druid-drk.yml

@@ -141,5 +141,11 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+
+

+ 4 - 1
fs-service/src/main/resources/application-druid-fby.yml

@@ -167,6 +167,9 @@ openIM:
     secret: openIM123
     userID: imAdmin
     url: https://web.im.fbylive.com/api
-#    prefix: fby
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+

+ 8 - 3
fs-service/src/main/resources/application-druid-hcl.yml

@@ -147,9 +147,14 @@ rocketmq:
     consumer:
         group: test-group
         access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
-        secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
 openIM:
-    secret: op
-    userID: im
+    secret: openIM123
+    userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+
+

+ 5 - 0
fs-service/src/main/resources/application-druid-hdt.yml

@@ -153,5 +153,10 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+

+ 7 - 2
fs-service/src/main/resources/application-druid-hyt-test.yml

@@ -151,7 +151,12 @@ rocketmq:
         access-key:  # 替换为实际的 accessKey
         secret-key:  # 替换为实际的 secretKey
 openIM:
-    secret:
-    userID:
+    secret: openIM123
+    userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+

+ 8 - 2
fs-service/src/main/resources/application-druid-hyt.yml

@@ -151,7 +151,13 @@ rocketmq:
         access-key:  # 替换为实际的 accessKey
         secret-key:  # 替换为实际的 secretKey
 openIM:
-    secret:
-    userID:
+    secret: openIM123
+    userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+
+

+ 6 - 0
fs-service/src/main/resources/application-druid-hzyy.yml

@@ -166,5 +166,11 @@ token:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+
+

+ 9 - 0
fs-service/src/main/resources/application-druid-jkj.yml

@@ -138,3 +138,12 @@ rocketmq:
         group: test-group
         access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
         secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
+#是否为新商户,新商户不走mpOpenId
+isNewWxMerchant: true
+openIM:
+    secret: openIM123
+    userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE

+ 6 - 0
fs-service/src/main/resources/application-druid-jnlzjk.yml

@@ -149,5 +149,11 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+
+

+ 6 - 0
fs-service/src/main/resources/application-druid-jnmy-test.yml

@@ -151,4 +151,10 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 isNewWxMerchant: true
+
+

+ 6 - 0
fs-service/src/main/resources/application-druid-jnmy.yml

@@ -154,5 +154,11 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+
+

+ 6 - 0
fs-service/src/main/resources/application-druid-jzzx-test.yml

@@ -170,5 +170,11 @@ token:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+
+

+ 4 - 0
fs-service/src/main/resources/application-druid-jzzx.yml

@@ -170,6 +170,10 @@ token:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: false
 

+ 6 - 2
fs-service/src/main/resources/application-druid-kyt.yml

@@ -143,8 +143,12 @@ rocketmq:
     access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
     secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
 openIM:
-  secret: op
-  userID: im
+  secret: openIM123
+  userID: imAdmin
+  url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+  type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
 

+ 10 - 2
fs-service/src/main/resources/application-druid-lmjy-test.yml

@@ -153,5 +153,13 @@ ipad:
     aiApi:
     voiceApi:
 openIM:
-    secret:
-    userID:
+    secret: openIM123
+    userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
+#是否为新商户,新商户不走mpOpenId
+isNewWxMerchant: true
+
+

+ 9 - 2
fs-service/src/main/resources/application-druid-lmjy.yml

@@ -153,5 +153,12 @@ ipad:
     aiApi:
     voiceApi:
 openIM:
-    secret:
-    userID:
+    secret: openIM123
+    userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
+#是否为新商户,新商户不走mpOpenId
+isNewWxMerchant: true
+

+ 6 - 0
fs-service/src/main/resources/application-druid-myhk-test.yml

@@ -153,5 +153,11 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://im.muyi88.com/api
+#是否使用新im
+im:
+    type: OPENIM
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+
+

+ 5 - 0
fs-service/src/main/resources/application-druid-myhk.yml

@@ -153,5 +153,10 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://im.muyi88.com/api
+#是否使用新im
+im:
+    type: OPENIM
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+

+ 6 - 0
fs-service/src/main/resources/application-druid-nmgyt.yml

@@ -151,5 +151,11 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+
+

+ 10 - 2
fs-service/src/main/resources/application-druid-qdtst-test.yml

@@ -164,5 +164,13 @@ token:
     # 令牌有效期(默认30分钟)
     expireTime: 180
 openIM:
-    secret:
-    userID:
+    secret: openIM123
+    userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
+#是否为新商户,新商户不走mpOpenId
+isNewWxMerchant: true
+
+

+ 6 - 2
fs-service/src/main/resources/application-druid-qdtst.yml

@@ -164,7 +164,11 @@ token:
     # 令牌有效期(默认30分钟)
     expireTime: 180
 openIM:
-    secret:
-    userID:
+    secret: openIM123
+    userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: false

+ 6 - 0
fs-service/src/main/resources/application-druid-sft-test.yml

@@ -140,5 +140,11 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+
+

+ 5 - 0
fs-service/src/main/resources/application-druid-sft.yml

@@ -144,5 +144,10 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+

+ 4 - 0
fs-service/src/main/resources/application-druid-sxjz.yml

@@ -165,5 +165,9 @@ openIM:
     secret: openIM123
     userID: imAdmin
     url:
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+

+ 7 - 0
fs-service/src/main/resources/application-druid-syysy-test.yml

@@ -164,3 +164,10 @@ openIM:
     secret: openIM123
     userID: imAdmin
     url: https://web.im.ysya.top/api
+#是否使用新im
+im:
+    type: OPENIM
+#是否为新商户,新商户不走mpOpenId
+isNewWxMerchant: true
+
+

+ 4 - 0
fs-service/src/main/resources/application-druid-syysy.yml

@@ -164,5 +164,9 @@ openIM:
     secret: openIM123
     userID: imAdmin
     url: https://web.im.ysya.top/api
+#是否使用新im
+im:
+    type: OPENIM
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+

+ 6 - 0
fs-service/src/main/resources/application-druid-whhm.yml

@@ -141,5 +141,11 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+
+

+ 7 - 2
fs-service/src/main/resources/application-druid-xfk.yml

@@ -149,7 +149,12 @@ rocketmq:
         access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
         secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
 openIM:
-    secret: o
-    userID: i
+    secret: openIM123
+    userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+

+ 6 - 0
fs-service/src/main/resources/application-druid-xzt.yml

@@ -142,9 +142,15 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
 #图片模板是否缓存
 tuiImgCache: '1'
 getTuiImg: 'C:\Tools\ylrm_his_scrm\images\36f5863ffbbbdfc31620ea177c75284c.jpg'
 getTuiFont: 'C:\Tools\ylrm_his_scrm\images\simsunb.ttf'
+
+

+ 8 - 0
fs-service/src/main/resources/application-druid-yjb.yml

@@ -140,3 +140,11 @@ rocketmq:
         secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+openIM:
+    secret: openIM123
+    userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
+

+ 10 - 0
fs-service/src/main/resources/application-druid-yzt.yml

@@ -146,3 +146,13 @@ rocketmq:
         group: voice-group
         access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
         secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
+#是否为新商户,新商户不走mpOpenId
+isNewWxMerchant: true
+openIM:
+    secret: openIM123
+    userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
+

+ 5 - 0
fs-service/src/main/resources/application-druid-zkzh-test.yml

@@ -142,5 +142,10 @@ cloud_host:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: false
+

+ 6 - 0
fs-service/src/main/resources/application-druid-zkzh.yml

@@ -142,5 +142,11 @@ cloud_host:
 openIM:
     secret: openIM123
     userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: false
+
+

+ 10 - 0
fs-service/src/main/resources/application-druid-zsjk.yml

@@ -148,3 +148,13 @@ rocketmq:
         group: test-group
         access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
         secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
+#是否为新商户,新商户不走mpOpenId
+isNewWxMerchant: true
+openIM:
+    secret: openIM123
+    userID: imAdmin
+    url: https://web.im.fbylive.com/api
+#是否使用新im
+im:
+    type: NONE
+

+ 2 - 0
fs-service/src/main/resources/application-druid.yml

@@ -148,3 +148,5 @@ rocketmq:
         group: test-group
         access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
         secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
+#是否为新商户,新商户不走mpOpenId
+isNewWxMerchant: true

+ 4 - 0
fs-service/src/main/resources/mapper/course/FsUserCourseVideoMapper.xml

@@ -36,6 +36,7 @@
         <result property="viewEndTime"    column="view_end_time"    />
         <result property="lastJoinTime"    column="last_join_time"    />
         <result property="projectId"    column="project_id"    />
+        <result property="isFirst"    column="is_first"    />
     </resultMap>
 
     <sql id="selectFsUserCourseVideoVo">
@@ -105,6 +106,7 @@
             <if test="listingStartTime != null">listing_start_time,</if>
             <if test="listingEndTime != null">listing_end_time,</if>
             <if test="userId != null">user_id,</if>
+            <if test="isFirst != null">is_first,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="fileId != null">#{fileId},</if>
@@ -142,6 +144,7 @@
             <if test="listingEndTime != null">#{listingEndTime},</if>
             <if test="projectId != null">#{projectId},</if>
             <if test="userId != null">#{userId},</if>
+            <if test="isFirst != null">#{isFirst},</if>
         </trim>
     </insert>
     <insert id="insertBatchFsUserCourseVideo" parameterType="FsUserCourseVideo" useGeneratedKeys="true" keyProperty="videoId">
@@ -228,6 +231,7 @@
             <if test="listingStartTime != null">listing_start_time = #{listingStartTime},</if>
             <if test="listingEndTime != null">listing_end_time = #{listingEndTime},</if>
             <if test="projectId != null">project_id = #{projectId},</if>
+            <if test="isFirst != null">is_first = #{isFirst},</if>
         </trim>
         where video_id = #{videoId}
     </update>

+ 22 - 7
fs-user-app/src/main/java/com/fs/app/controller/CompanyUserController.java

@@ -27,16 +27,18 @@ import com.fs.company.param.companyUserAddPrintParam;
 import com.fs.company.service.ICompanyUserCardService;
 import com.fs.company.service.ICompanyUserService;
 import com.fs.company.service.ICompanyUserUserService;
-import com.fs.fastGpt.domain.FastgptChatVoiceHomo;
 import com.fs.fastGpt.mapper.FastgptChatVoiceHomoMapper;
 import com.fs.fastgptApi.util.AudioUtils;
-import com.fs.fastgptApi.vo.AudioVO;
-import com.fs.his.param.FsCouponReceiveParam;
-import com.fs.his.param.FsHealthTongueUParam;
-import com.fs.sop.domain.QwSopTempVoice;
+import com.fs.his.param.*;
+import com.fs.his.service.IFsPrescribeService;
+import com.fs.his.vo.FsPrescribeListDVO;
+import com.fs.his.vo.FsPrescribeListUVO;
+import com.fs.his.vo.FsPrescribeListVO;
 import com.fs.sop.service.IQwSopTempVoiceService;
 import com.fs.system.oss.CloudStorageService;
 import com.fs.system.oss.OSSFactory;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.io.FileUtils;
@@ -46,7 +48,6 @@ import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
-import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -56,7 +57,6 @@ import javax.servlet.http.HttpServletRequest;
 import java.io.*;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
 
 
 @Api("销售接口")
@@ -74,6 +74,8 @@ public class CompanyUserController extends  AppBaseController {
     @Autowired
     private ICompanyUserUserService companyUserUserService;
     @Autowired
+    private IFsPrescribeService fsPrescribeService;
+    @Autowired
     private IQwSopTempVoiceService voiceService;
     @Autowired
     private FastgptChatVoiceHomoMapper fastgptChatVoiceHomoMapper;
@@ -358,4 +360,17 @@ public class CompanyUserController extends  AppBaseController {
         }
         return null;
     }
+    @Login
+    @GetMapping("/getPrescribeList")
+    public R getPrescribeList(FsPrescribeListDCompanyParam param)
+    {
+        PageHelper.startPage(param.getPageNum(), param.getPageSize());
+        param.setCompanyUserId(getCompanyUserId());
+        param.setStatus(1);
+        List<FsPrescribeListDVO> list=fsPrescribeService.selectFsPrescribeListDVOByCompanyUser(param);
+        PageInfo<FsPrescribeListDVO> listPageInfo=new PageInfo<>(list);
+        return R.ok().put("data",listPageInfo);
+    }
+
+
 }

+ 38 - 18
fs-user-app/src/main/java/com/fs/app/controller/FollowController.java

@@ -7,6 +7,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fs.app.annotation.Login;
 import com.fs.app.controller.AppBaseController;
 import com.fs.common.core.domain.R;
+import com.fs.common.enums.ImTypeEnum;
 import com.fs.his.domain.FsDisease;
 import com.fs.his.domain.FsDoctor;
 import com.fs.his.domain.FsFollow;
@@ -17,6 +18,7 @@ import com.fs.his.param.FsFollowListUParam;
 import com.fs.his.service.*;
 import com.fs.his.vo.FsDiseaseListUVO;
 import com.fs.his.vo.FsFollowListUVO;
+import com.fs.im.config.ImTypeConfig;
 import com.fs.im.dto.*;
 import com.fs.im.service.IImService;
 import com.fs.im.service.OpenIMService;
@@ -90,24 +92,44 @@ public class FollowController extends AppBaseController {
         param.setWriteStatus(1);
         param.setUpdateTime(new Date());
         if(followService.updateFsFollow(param)>0){
+            MsgDTO msgDTO=new MsgDTO();
+            msgDTO.setTo_Account("D-"+follow.getDoctorId());
+            msgDTO.setFrom_Account("U-"+follow.getUserId());
             MsgCustomDTO customDTO1=new MsgCustomDTO();
             customDTO1.setType("follow");
             customDTO1.setImType(2);
             customDTO1.setOrderId(follow.getStoreOrderId().toString());
             customDTO1.setFollowId(follow.getFollowId().toString());
-            ObjectMapper objectMapper = new ObjectMapper();
+            msgDTO.setCloudCustomData(JSONUtil.toJsonStr(customDTO1));
+
+            List<MsgDataDTO> msgs=new ArrayList<>();
+            MsgDataDTO msg=new MsgDataDTO();
+            String ext=JSONUtil.toJsonStr(follow);
             String followId=follow.getFollowId().toString();
+            msg.setMsgContent(new MsgDataFormatDTO("follow",ext,followId));
+            msg.setMsgType("TIMCustomElem");//TIMCustomElem
+            msgs.add(msg);
+            msgDTO.setMsgBody(msgs);
+            ObjectMapper objectMapper = new ObjectMapper();
             String ex = objectMapper.writeValueAsString(customDTO1);
-            OpenImResponseDTO openImResponseDTO = openIMService.sendUtilUserToDoctor("U" + follow.getUserId(), "D" + follow.getDoctorId(), 110, "follow", "", "", followId, "", ex);
 
+            if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+                openIMService.sendUtilUserToDoctor("U" + follow.getUserId(), "D" + follow.getDoctorId(), 110, "follow", "", "", followId, "", ex);
+            }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+                imService.sendMsg(msgDTO);
+            }
             //MsgResponseDTO msgResponseDTO = imService.sendMsg(msgDTO);
             //logger.info("用户发送随访:"+msgResponseDTO);
             userService.followAddIntegral(follow.getUserId(),follow.getFollowId());
 
             //发送给用户
-            //MsgDTO msgDTO2=new MsgDTO();
-
-            /*msgDTO2.setCloudCustomData(JSONUtil.toJsonStr(customDTO2));
+            MsgDTO msgDTO2=new MsgDTO();
+            MsgCustomDTO customDTO2=new MsgCustomDTO();
+            customDTO2.setType("startDrugReport");
+            customDTO2.setImType(2);
+            customDTO2.setOrderId(follow.getStoreOrderId().toString());
+            customDTO2.setFollowId(follow.getFollowId().toString());
+            msgDTO2.setCloudCustomData(JSONUtil.toJsonStr(customDTO2));
             msgDTO2.setFrom_Account("D-"+follow.getDoctorId());
             msgDTO2.setTo_Account("U-"+follow.getUserId());
             List<MsgDataDTO> msgs2=new ArrayList<>();
@@ -115,27 +137,25 @@ public class FollowController extends AppBaseController {
             msg2.setMsgType("TIMTextElem");
             msg2.setMsgContent(new MsgDataFormatDTO("您好,我是您的专属药师,您有任何问题都可以先留言给我,请耐心等待一下,用户咨询量较多,我会按咨询顺序一一回复哒~"));
             msgs2.add(msg2);
-            msgDTO2.setMsgBody(msgs2);*/
+            msgDTO2.setMsgBody(msgs2);
             //imService.sendMsg(msgDTO2);
-            /*OpenImMsgDTO openImMsgDTO1 = new OpenImMsgDTO();
+            OpenImMsgDTO openImMsgDTO1 = new OpenImMsgDTO();
             openImMsgDTO1.setSendID("D"+follow.getDoctorId().toString());
             openImMsgDTO1.setRecvID("U"+follow.getUserId().toString());
             openImMsgDTO1.setContentType(101);
             openImMsgDTO1.setSenderPlatformID(5);
             openImMsgDTO1.setSessionType(1);
-            openImMsgDTO1.setEx(ex1);
+            //openImMsgDTO1.setEx(ex1);
             OpenImMsgDTO.Content content1 = new OpenImMsgDTO.Content();
-            openImMsgDTO1.setContent(content1);*/
-            //content1.setContent("您好,我是您的专属药师,您有任何问题都可以先留言给我,请耐心等待一下,用户咨询量较多,我会按咨询顺序一一回复哒~");
-            MsgCustomDTO customDTO2=new MsgCustomDTO();
-            customDTO2.setType("startDrugReport");
-            customDTO2.setImType(2);
-            customDTO2.setOrderId(follow.getStoreOrderId().toString());
-            customDTO2.setFollowId(follow.getFollowId().toString());
+            openImMsgDTO1.setContent(content1);
+            content1.setContent("您好,我是您的专属药师,您有任何问题都可以先留言给我,请耐心等待一下,用户咨询量较多,我会按咨询顺序一一回复哒~");
             String ex1 = objectMapper.writeValueAsString(customDTO2);
-            openIMService.sendUtil("D"+follow.getDoctorId(),"U"+follow.getUserId(),101,
-                    "","","您好,我是您的专属药师,您有任何问题都可以先留言给我,请耐心等待一下,用户咨询量较多,我会按咨询顺序一一回复哒~","","",ex1);
-            //openIMService.openIMSendMsg(openImMsgDTO1);
+            if (ImTypeConfig.IMTYPE== ImTypeEnum.OPENIM){
+                openIMService.sendUtil("D"+follow.getDoctorId(),"U"+follow.getUserId(),101,
+                        "","","您好,我是您的专属药师,您有任何问题都可以先留言给我,请耐心等待一下,用户咨询量较多,我会按咨询顺序一一回复哒~","","",ex1);
+            }else if (ImTypeConfig.IMTYPE== ImTypeEnum.TENCENT){
+                imService.sendMsg(msgDTO2);
+            }
             return R.ok("操作成功");
 
         }

Some files were not shown because too many files changed in this diff