Bladeren bron

Merge branch 'master' of http://1.14.104.71:10880/root/ylrz_his_scrm_java

caoliqin 1 week geleden
bovenliggende
commit
0a966cf494
38 gewijzigde bestanden met toevoegingen van 320 en 60 verwijderingen
  1. 28 2
      fs-admin/src/main/java/com/fs/qw/controller/SopUserLogsController.java
  2. 3 1
      fs-company/src/main/java/com/fs/company/controller/baidu/Conversion.java
  3. 30 12
      fs-company/src/main/java/com/fs/company/controller/qw/SopUserLogsController.java
  4. 0 6
      fs-qw-api-msg/src/main/java/com/fs/app/controller/imgTest.java
  5. 13 0
      fs-service/src/main/java/com/fs/config/ai/AiHostProper.java
  6. 7 0
      fs-service/src/main/java/com/fs/course/mapper/FsVideoResourceMapper.java
  7. 1 1
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java
  8. 17 12
      fs-service/src/main/java/com/fs/course/service/impl/TencentCloudCosService.java
  9. 33 0
      fs-service/src/main/java/com/fs/his/dto/PackageOrderDTO.java
  10. 3 0
      fs-service/src/main/java/com/fs/his/mapper/FsPackageOrderMapper.java
  11. 3 0
      fs-service/src/main/java/com/fs/his/service/IFsPackageOrderService.java
  12. 1 1
      fs-service/src/main/java/com/fs/his/service/impl/FsDoctorServiceImpl.java
  13. 6 0
      fs-service/src/main/java/com/fs/his/service/impl/FsPackageOrderServiceImpl.java
  14. 4 4
      fs-service/src/main/java/com/fs/his/service/impl/FsPackageServiceImpl.java
  15. 4 1
      fs-service/src/main/java/com/fs/qw/service/impl/QwUserServiceImpl.java
  16. 1 0
      fs-service/src/main/java/com/fs/sop/domain/SopUserLogsInfo.java
  17. 5 1
      fs-service/src/main/java/com/fs/sop/mapper/SopUserLogsInfoMapper.java
  18. 45 2
      fs-service/src/main/java/com/fs/sop/mapper/SopUserLogsMapper.java
  19. 2 0
      fs-service/src/main/java/com/fs/sop/service/ISopUserLogsService.java
  20. 20 0
      fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsServiceImpl.java
  21. 2 0
      fs-service/src/main/resources/application-config-dev.yml
  22. 2 1
      fs-service/src/main/resources/application-config-druid-hcl.yml
  23. 2 1
      fs-service/src/main/resources/application-config-druid-hdt.yml
  24. 2 1
      fs-service/src/main/resources/application-config-druid-hzyy.yml
  25. 2 1
      fs-service/src/main/resources/application-config-druid-jnmy.yml
  26. 2 1
      fs-service/src/main/resources/application-config-druid-jzzx.yml
  27. 2 1
      fs-service/src/main/resources/application-config-druid-sxjz.yml
  28. 2 1
      fs-service/src/main/resources/application-config-druid-yzt.yml
  29. 2 1
      fs-service/src/main/resources/application-config-druid.yml
  30. 2 1
      fs-service/src/main/resources/application-config-myhk.yml
  31. 4 4
      fs-service/src/main/resources/application-druid-myhk.yml
  32. 8 0
      fs-service/src/main/resources/mapper/his/FsPackageOrderMapper.xml
  33. 1 1
      fs-service/src/main/resources/mapper/qw/QwWatchLogMapper.xml
  34. 6 2
      fs-service/src/main/resources/mapper/sop/QwSopMapper.xml
  35. 9 0
      fs-service/src/main/resources/mapper/sop/SopUserLogsInfoMapper.xml
  36. 7 0
      fs-service/src/main/resources/mapper/sop/SopUserLogsMapper.xml
  37. 3 1
      fs-user-app/src/main/java/com/fs/app/controller/PackageController.java
  38. 36 0
      fs-user-app/src/main/java/com/fs/app/controller/PackageOrderController.java

+ 28 - 2
fs-admin/src/main/java/com/fs/qw/controller/SopUserLogsController.java

@@ -4,7 +4,10 @@ package com.fs.qw.controller;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.page.TableDataInfo;
+import com.fs.qw.mapper.QwUserMapper;
 import com.fs.qw.param.SopUserLogsVO;
+import com.fs.sop.domain.QwSop;
+import com.fs.sop.mapper.QwSopMapper;
 import com.fs.sop.params.SopUserLogsParam;
 import com.fs.sop.service.ISopUserLogsService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,14 +32,37 @@ public class SopUserLogsController extends BaseController
     @Autowired
     private ISopUserLogsService sopUserLogsService;
 
+    @Autowired
+    private QwSopMapper sopMapper;
+
+    @Autowired
+    private QwUserMapper qwUserMapper;
+
+
     /**
      * 查询sopUserLogs列表
      */
     @GetMapping("/list")
     public TableDataInfo list(SopUserLogsParam sopUserLogs)
     {
-        startPage();
-        List<SopUserLogsVO> list = sopUserLogsService.selectSopUserLogsList(sopUserLogs);
+
+        QwSop qwSop = sopMapper.selectQwSopById(sopUserLogs.getSopId());
+        Integer filterMode = qwSop.getFilterMode();
+
+        List<SopUserLogsVO> list=null;
+        if(filterMode == null || filterMode == 1){
+            startPage();
+            list = sopUserLogsService.selectSopUserLogsList(sopUserLogs);
+        }else {
+            startPage();
+            list = sopUserLogsService.selectSopUserLogsGroupListByParam(sopUserLogs);
+        }
+
+
+        list.forEach(item->{
+            item.setQwUserName(qwUserMapper.selectQwUserByQwUserIdAndCorpId(item.getQwUserId(), item.getCorpId()));
+        });
+
         return getDataTable(list);
     }
 

+ 3 - 1
fs-company/src/main/java/com/fs/company/controller/baidu/Conversion.java

@@ -17,7 +17,9 @@ import java.util.List;
 public class Conversion {
     @Autowired
     private BaiduApiService conversionDataService;
-    @Value("${baidu.token}")
+
+//    @Value("${baidu.token}")
+    @Value("12345649")
     private String token;
     /**
      * 发送单个转换数据

+ 30 - 12
fs-company/src/main/java/com/fs/company/controller/qw/SopUserLogsController.java

@@ -11,13 +11,16 @@ import com.fs.framework.service.TokenService;
 import com.fs.qw.mapper.QwUserMapper;
 import com.fs.qw.param.SopUserLogsVO;
 import com.fs.qw.service.IQwUserService;
+import com.fs.sop.domain.QwSop;
 import com.fs.sop.domain.SopUserLogs;
+import com.fs.sop.mapper.QwSopMapper;
 import com.fs.sop.params.SopUserLogsParam;
 import com.fs.sop.service.ISopUserLogsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -38,6 +41,9 @@ public class SopUserLogsController extends BaseController
     @Autowired
     private QwUserMapper qwUserMapper;
 
+    @Autowired
+    private QwSopMapper sopMapper;
+
     /**
      * 查询sopUserLogs列表
      */
@@ -45,12 +51,24 @@ public class SopUserLogsController extends BaseController
     @GetMapping("/list")
     public TableDataInfo list(SopUserLogsParam sopUserLogs)
     {
-        startPage();
         sopUserLogs.setStatus(1);
-        List<SopUserLogsVO> list = sopUserLogsService.selectSopUserLogsList(sopUserLogs);
+
+        QwSop qwSop = sopMapper.selectQwSopById(sopUserLogs.getSopId());
+        Integer filterMode = qwSop.getFilterMode();
+
+        List<SopUserLogsVO> list=null;
+        if(filterMode == null || filterMode == 1){
+            startPage();
+             list = sopUserLogsService.selectSopUserLogsList(sopUserLogs);
+        }else {
+            startPage();
+            list = sopUserLogsService.selectSopUserLogsGroupListByParam(sopUserLogs);
+        }
+
         list.forEach(item->{
             item.setQwUserName(qwUserMapper.selectQwUserByQwUserIdAndCorpId(item.getQwUserId(), item.getCorpId()));
         });
+
         return getDataTable(list);
     }
 
@@ -89,14 +107,14 @@ public class SopUserLogsController extends BaseController
     }
 
 
-//    /**
-//     * 删除sopUserLogs
-//     */
-//    @PreAuthorize("@ss.hasPermi('qwSop:sopUserLogs:remove')")
-//    @Log(title = "sopUserLogs", businessType = BusinessType.DELETE)
-//	@DeleteMapping("/{ids}")
-//    public AjaxResult remove(@PathVariable Long[] ids)
-//    {
-//        return toAjax(sopUserLogsService.deleteSopUserLogsByIds(ids));
-//    }
+    /**
+     * 删除sopUserLogs
+     */
+    @PreAuthorize("@ss.hasPermi('qwSop:sopUserLogs:remove')")
+    @Log(title = "删除sopUserLogs", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        return toAjax(sopUserLogsService.deleteSopUserLogsByIds(ids));
+    }
 }

+ 0 - 6
fs-qw-api-msg/src/main/java/com/fs/app/controller/imgTest.java

@@ -1,11 +1,5 @@
 package com.fs.app.controller;
 
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.fs.app.config.ConfigProperties;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;

+ 13 - 0
fs-service/src/main/java/com/fs/config/ai/AiHostProper.java

@@ -0,0 +1,13 @@
+package com.fs.config.ai;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component
+@Data
+public class AiHostProper {
+    @Value("${ipad.ipadUrl}")
+    private String ipadUrl;
+    
+}

+ 7 - 0
fs-service/src/main/java/com/fs/course/mapper/FsVideoResourceMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fs.course.domain.FsVideoResource;
 import com.fs.course.vo.FsVideoResourceVO;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 import java.util.Map;
@@ -17,4 +18,10 @@ public interface FsVideoResourceMapper extends BaseMapper<FsVideoResource> {
      * @return  list
      */
     List<FsVideoResourceVO> selectVideoResourceListByMap(@Param("params") Map<String, Object> params);
+
+    @Select("select * from fs_video_resource where line1 is not null and is_transcode = 0 and is_del = 0")
+    List<FsVideoResource> selectVideoNotTranscode();
+
+    @Select("select * from fs_video_resource where is_transcode = 1 and is_del = 0 and transcode_file_key is null")
+    List<FsVideoResource> selectVideoIsTranscode();
 }

+ 1 - 1
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -410,7 +410,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         if (log==null){
             createWatchLog(param);
         }
-        return R.ok();
+        return R.ok().put("qwExternalId",matchedContact.getId());
     }
 
     private void createWatchLog(FsUserCourseVideoAddKfUParam param) {

+ 17 - 12
fs-service/src/main/java/com/fs/course/service/impl/TencentCloudCosService.java

@@ -3,7 +3,9 @@ package com.fs.course.service.impl;
 import com.fs.common.core.domain.R;
 import com.fs.config.tencent.TencentProperties;
 import com.fs.course.domain.FsUserCourseVideo;
+import com.fs.course.domain.FsVideoResource;
 import com.fs.course.mapper.FsUserCourseVideoMapper;
+import com.fs.course.mapper.FsVideoResourceMapper;
 import com.fs.course.service.ITencentCloudCosService;
 import com.qcloud.cos.COSClient;
 import com.qcloud.cos.exception.CosClientException;
@@ -162,14 +164,14 @@ public class TencentCloudCosService implements ITencentCloudCosService {
     public R updateUrl() {
         try {
             //查出已转码的视频并且没有文件key的
-            List<FsUserCourseVideo> videos =  courseVideoMapper.selectVideoIsTranscode();
-            for (FsUserCourseVideo video : videos ){
-                String newUrl = replaceCourse(video.getLineOne());
-                FsUserCourseVideo videoMap = new FsUserCourseVideo();
-                videoMap.setVideoId(video.getVideoId());
-                videoMap.setLineOne(newUrl);
+            List<FsVideoResource> videos =  videoResourceMapper.selectVideoIsTranscode();
+            for (FsVideoResource video : videos ){
+                String newUrl = replaceCourse(video.getLine1());
+                FsVideoResource videoMap = new FsVideoResource();
+                videoMap.setId(video.getId());
+                videoMap.setLine1(newUrl);
                 videoMap.setTranscodeFileKey(replaceCourse(video.getFileKey()));
-                courseVideoMapper.updateFsUserCourseVideo(videoMap);
+                videoResourceMapper.updateById(videoMap);
             }
             return R.ok();
         }catch (Exception e){
@@ -209,6 +211,9 @@ public class TencentCloudCosService implements ITencentCloudCosService {
     @Autowired
     private FsUserCourseVideoMapper courseVideoMapper;
 
+    @Autowired
+    private FsVideoResourceMapper videoResourceMapper;
+
     /**
      * 批量转码
      * @return
@@ -216,15 +221,15 @@ public class TencentCloudCosService implements ITencentCloudCosService {
     @Override
     public R videoTranscode() {
         //查出未转码的视频
-        List<FsUserCourseVideo> videos =  courseVideoMapper.selectVideoTranscode(0);
-        for (FsUserCourseVideo video : videos ){
+        List<FsVideoResource> videos =  videoResourceMapper.selectVideoNotTranscode();
+        for (FsVideoResource video : videos ){
             String inputPath = "/"+video.getFileKey();
             String outputPath = "/"+replaceCourse(video.getFileKey());
             submitTranscodeJob(inputPath,outputPath);
-            FsUserCourseVideo videoMap = new FsUserCourseVideo();
-            videoMap.setVideoId(video.getVideoId());
+            FsVideoResource videoMap = new FsVideoResource();
+            videoMap.setId(video.getId());
             videoMap.setIsTranscode(1);
-            courseVideoMapper.updateFsUserCourseVideo(videoMap);
+            videoResourceMapper.updateById(videoMap);
         }
 
         return R.ok();

+ 33 - 0
fs-service/src/main/java/com/fs/his/dto/PackageOrderDTO.java

@@ -0,0 +1,33 @@
+package com.fs.his.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class PackageOrderDTO {
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "支付时间")
+    private Date payTime;
+
+    private Date createTime;
+
+    /** 套餐名称 */
+    @Excel(name = "套餐名称")
+    private String packageName;
+
+    /** 用户ID */
+    @Excel(name = "用户ID")
+    private Long userId;
+
+    /** 订单号 */
+    @Excel(name = "订单号")
+    private String orderSn;
+
+    private String fsUserName;
+
+
+}

+ 3 - 0
fs-service/src/main/java/com/fs/his/mapper/FsPackageOrderMapper.java

@@ -5,6 +5,7 @@ import java.util.List;
 import com.fs.his.domain.FsPackage;
 import com.fs.his.domain.FsPackageOrder;
 import com.fs.his.domain.FsStorePayment;
+import com.fs.his.dto.PackageOrderDTO;
 import com.fs.his.param.FsPackageOrderListUParam;
 import com.fs.his.param.FsPackageOrderParam;
 import com.fs.his.vo.FsPackageOrderExcelVO;
@@ -219,4 +220,6 @@ public interface FsPackageOrderMapper
     Long selectFsPackageOrderExcelListVOCount(FsPackageOrderParam fsPackageOrder);
 
     FsPackage selectFsPackageByOrderId(Long packageOrderId);
+
+    List<PackageOrderDTO> getNewOrder();
 }

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

@@ -6,6 +6,7 @@ import com.fs.common.core.domain.R;
 import com.fs.his.domain.FsPackage;
 import com.fs.his.domain.FsPackageOrder;
 import com.fs.his.domain.FsStorePayment;
+import com.fs.his.dto.PackageOrderDTO;
 import com.fs.his.param.*;
 import com.fs.his.vo.FsPackageOrderExcelVO;
 import com.fs.his.vo.FsPackageOrderListUVO;
@@ -117,4 +118,6 @@ public interface IFsPackageOrderService
     void exportData(FsPackageOrderParam fsPackageOrder);
 
     FsPackage selectFsPackageByOrderId(Long packageOrderId);
+
+    List<PackageOrderDTO> getNewOrder();
 }

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

@@ -111,7 +111,7 @@ public class FsDoctorServiceImpl implements IFsDoctorService
 
         fsDoctor.setCreateTime(DateUtils.getNowDate());
         int i = fsDoctorMapper.insertFsDoctor(fsDoctor);
-        if (fsDoctor.getIsPrescribeDoctor()==1){
+        if (fsDoctor.getIsPrescribeDoctor() != null && fsDoctor.getIsPrescribeDoctor()==1){
             fsDoctor.setPrescribeDoctorId(fsDoctor.getDoctorId());
             fsDoctorMapper.updateFsDoctor(fsDoctor);
         }

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

@@ -37,6 +37,7 @@ import com.fs.event.TemplateListenEnum;
 import com.fs.his.config.FsSysConfig;
 import com.fs.his.domain.*;
 import com.fs.his.dto.PackageConfigDTO;
+import com.fs.his.dto.PackageOrderDTO;
 import com.fs.his.dto.PayConfigDTO;
 import com.fs.his.dto.StoreOrderProductDTO;
 import com.fs.his.enums.FsPackageOrderStatusEnum;
@@ -1397,6 +1398,11 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
         return fsPackageOrderMapper.selectFsPackageByOrderId(packageOrderId);
     }
 
+    @Override
+    public List<PackageOrderDTO> getNewOrder() {
+        return fsPackageOrderMapper.getNewOrder();
+    }
+
     @Override
     public R addPackageOrder(FsPackageOrderAddParam param) {
         FsPatient patient=null;

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

@@ -77,7 +77,7 @@ public class FsPackageServiceImpl implements IFsPackageService {
     public int insertFsPackage(FsPackage fsPackage) {
 
         fsPackage.setCreateTime(DateUtils.getNowDate());
-        if (fsPackage.getPackageSubType() != 1) {
+//        if (fsPackage.getPackageSubType() != 1) {
             if (fsPackage.getProductJson() != null) {
                 JSONArray objects = JSONUtil.parseArray(fsPackage.getProductJson());
                 List<FsPackagePruductDTO> products = JSONUtil.toList(objects, FsPackagePruductDTO.class);
@@ -93,7 +93,7 @@ public class FsPackageServiceImpl implements IFsPackageService {
                 fsPackage.setInquiryCostPrice(in);
                 fsPackage.setTotalCostPrice(toal.add(in));
             }
-        }
+//        }
         return fsPackageMapper.insertFsPackage(fsPackage);
     }
 
@@ -106,7 +106,7 @@ public class FsPackageServiceImpl implements IFsPackageService {
     @Override
     public int updateFsPackage(FsPackage fsPackage) {
         fsPackage.setUpdateTime(DateUtils.getNowDate());
-        if (fsPackage.getPackageSubType() != null && fsPackage.getPackageSubType() != 1) {
+//        if (fsPackage.getPackageSubType() != null && fsPackage.getPackageSubType() != 1) {
             if (fsPackage.getProductJson() != null) {
                 JSONArray objects = JSONUtil.parseArray(fsPackage.getProductJson());
                 List<FsPackagePruductDTO> products = JSONUtil.toList(objects, FsPackagePruductDTO.class);
@@ -119,7 +119,7 @@ public class FsPackageServiceImpl implements IFsPackageService {
                 fsPackage.setInquiryCostPrice(in);
                 fsPackage.setTotalCostPrice(toal.add(in));
             }
-        }
+//        }
         return fsPackageMapper.updateFsPackage(fsPackage);
     }
 

+ 4 - 1
fs-service/src/main/java/com/fs/qw/service/impl/QwUserServiceImpl.java

@@ -8,6 +8,7 @@ import com.fs.common.core.redis.RedisCache;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.service.ICompanyConfigService;
 import com.fs.company.service.ICompanyUserService;
+import com.fs.config.ai.AiHostProper;
 import com.fs.config.cloud.CloudHostProper;
 import com.fs.his.config.FsSysConfig;
 import com.fs.his.utils.ConfigUtil;
@@ -1059,6 +1060,8 @@ public class QwUserServiceImpl implements IQwUserService
 
     @Autowired
     WxWorkService wxWorkService;
+    @Autowired
+    AiHostProper aiHostProper;
     @Override
     public R loginQwIpad(QwLoginHookParam loginParam) {
         QwUser qwUser = qwUserMapper.selectQwUserById(loginParam.getQwUserId());
@@ -1106,7 +1109,7 @@ public class QwUserServiceImpl implements IQwUserService
             return R.ok("登录成功");
         }
         WxWorkSetCallbackUrlDTO wxWorkSetCallbackUrlDTO = new WxWorkSetCallbackUrlDTO();
-        wxWorkSetCallbackUrlDTO.setUrl("http://ipad.cdwjyyh.com/msg/callback/"+serverId);
+        wxWorkSetCallbackUrlDTO.setUrl(aiHostProper+"/msg/callback/"+serverId);
         wxWorkSetCallbackUrlDTO.setUuid(data.getUuid());
         wxWorkService.SetCallbackUrl(wxWorkSetCallbackUrlDTO,serverId);
 

+ 1 - 0
fs-service/src/main/java/com/fs/sop/domain/SopUserLogsInfo.java

@@ -46,6 +46,7 @@ public class SopUserLogsInfo implements Serializable {
 
     @TableField(exist = false)
     private Integer filterMode;
+
     @TableField(exist = false)
     private String chatId;
     @TableField(exist = false)

+ 5 - 1
fs-service/src/main/java/com/fs/sop/mapper/SopUserLogsInfoMapper.java

@@ -96,7 +96,11 @@ public interface SopUserLogsInfoMapper {
     @DataSource(DataSourceType.SOP)
     int deleteSopUserLogsInfoBySopIds(@Param("sopIds") String[] sopIds);
 
-
+    /**
+     * 批量删除
+     */
+    @DataSource(DataSourceType.SOP)
+    int deleteSopUserLogsInfoByUserLogsIds(@Param("userLogsIds") String[] userLogsIds);
     /**
      * 根据ID修改记录
      * @return 影响行数

+ 45 - 2
fs-service/src/main/java/com/fs/sop/mapper/SopUserLogsMapper.java

@@ -26,6 +26,9 @@ public interface SopUserLogsMapper {
     @DataSource(DataSourceType.SOP)
     public int deleteSopUserLogsById(String id);
 
+    @DataSource(DataSourceType.SOP)
+    public int deleteSopUserLogsByIds(String[] ids);
+
     @DataSource(DataSourceType.SOP)
     public int insertSopUserLogsByDate(@Param("data") SopUserLogsParamByDate logsParamByDate);
 
@@ -137,7 +140,6 @@ public interface SopUserLogsMapper {
     @DataSource(DataSourceType.SOP)
     SopUserLogs selectSopUserLogsByDateAndIds(SopUserLogsParamByDate sopUserLogs);
 
-    //TODO left join 改为inner join
     @DataSource(DataSourceType.SOP)
     @Select({"<script> " +
             "SELECT DISTINCT\n" +
@@ -152,7 +154,7 @@ public interface SopUserLogsMapper {
             "            l.user_id,\n" +
             "            DATEDIFF(CURRENT_DATE, l.start_time) + 1 AS count_days\n" +
             "        FROM sop_user_logs l " +
-            "left join sop_user_logs_info i on l.id = i.user_logs_id "  +
+            "inner join sop_user_logs_info i on l.id = i.user_logs_id "  +
             "where 1=1 " +
             "<if test = ' maps.id!=null '> " +
             "and l.id = #{maps.id} " +
@@ -179,6 +181,47 @@ public interface SopUserLogsMapper {
             "</script>"})
     List<SopUserLogsVO> selectSopUserLogsListByParam(@Param("maps") SopUserLogsParam param);
 
+    @DataSource(DataSourceType.SOP)
+    @Select({"<script> " +
+            "SELECT DISTINCT\n" +
+            "            l.id,\n" +
+            "            l.sop_id,\n" +
+            "            l.sop_temp_id,\n" +
+            "            l.qw_user_id,\n" +
+            "            l.corp_id,\n" +
+            "            l.chat_id,\n" +
+            "            l.start_time,\n" +
+            "            l.status,\n" +
+            "            l.user_id,\n" +
+            "            DATEDIFF(CURRENT_DATE, l.start_time) + 1 AS count_days\n" +
+            "        FROM sop_user_logs l " +
+            "left join sop_user_logs_info i on l.id = i.user_logs_id "  +
+            "where 1=1 " +
+            "<if test = ' maps.id!=null '> " +
+            "and l.id = #{maps.id} " +
+            "</if>" +
+            "<if test = ' maps.sopId != null '> " +
+            "and l.sop_id = #{maps.sopId} " +
+            "</if>" +
+            "<if test = ' maps.sopTempId != null '> " +
+            "and l.sop_temp_id = #{maps.sopTempId} " +
+            "</if>" +
+            "<if test = ' maps.qwUserId!=null  '> " +
+            "and l.qw_user_id = #{maps.qwUserId} " +
+            "</if>" +
+            "<if test = ' maps.startTime!=null  '> " +
+            "and l.start_time = #{maps.startTime} " +
+            "</if>" +
+            "<if test = ' maps.status!=null  '> " +
+            "and l.status = #{maps.status} " +
+            "</if>" +
+            "<if test = ' maps.externalUserName!=null and maps.externalUserName != \"\"  '> " +
+            "and i.external_user_name like concat('%', #{maps.externalUserName}, '%') " +
+            "</if>" +
+            "order by start_time desc" +
+            "</script>"})
+    List<SopUserLogsVO> selectSopUserLogsGroupListByParam(@Param("maps") SopUserLogsParam param);
+
 
     @DataSource(DataSourceType.SOP)
     void batchInsertSopUserLogs(@Param("list") List<SopUserLogs> list);

+ 2 - 0
fs-service/src/main/java/com/fs/sop/service/ISopUserLogsService.java

@@ -15,6 +15,7 @@ public interface ISopUserLogsService {
 
     public int insertSopUserLogsByDate(SopUserLogsParamByDate logsParamByDate);
 
+    public int deleteSopUserLogsByIds(String[] ids);
 //    public int updateSopUserLogsDistinct(SopUserLogs sopUserLogs);
 
 //    public int updateSopUserLogsDistinctByList(SopUserLogsArray userLogsArray);
@@ -28,6 +29,7 @@ public interface ISopUserLogsService {
     public List<SopUserLogs> selectSopUserLogsList(SopUserLogs sopUserLogs);
 
     public List<SopUserLogsVO> selectSopUserLogsList(SopUserLogsParam param);
+    public List<SopUserLogsVO> selectSopUserLogsGroupListByParam(SopUserLogsParam param);
 
     public String selectSopUserLogsByUpdate(SopUserLogs sopUserLogs);
 

+ 20 - 0
fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsServiceImpl.java

@@ -22,6 +22,7 @@ import com.fs.qw.service.IQwGroupChatService;
 import com.fs.qw.vo.QwSopRuleTimeVO;
 import com.fs.qw.vo.QwSopTempSetting;
 import com.fs.qwApi.service.QwApiService;
+import com.fs.sop.domain.QwSop;
 import com.fs.sop.domain.QwSopLogs;
 import com.fs.sop.domain.SopUserLogs;
 import com.fs.sop.domain.SopUserLogsInfo;
@@ -119,6 +120,14 @@ public class SopUserLogsServiceImpl  implements ISopUserLogsService {
         return sopUserLogsMapper.insertSopUserLogsByDate(logsParamByDate);
     }
 
+    @Override
+    public int deleteSopUserLogsByIds(String[] ids) {
+        //删除营期详情用户
+        sopUserLogsInfoMapper.deleteSopUserLogsInfoByUserLogsIds(ids);
+
+        return sopUserLogsMapper.deleteSopUserLogsByIds(ids);
+    }
+
 
 //    @Override
 //    public int updateSopUserLogsDistinct(SopUserLogs sopUserLogs) {
@@ -617,6 +626,16 @@ public class SopUserLogsServiceImpl  implements ISopUserLogsService {
     @Override
     public List<SopUserLogsVO> selectSopUserLogsList(SopUserLogsParam param) {
         List<SopUserLogsVO> list = sopUserLogsMapper.selectSopUserLogsListByParam(param);
+        return resultSopUserLogsList(list);
+    }
+
+    @Override
+    public List<SopUserLogsVO> selectSopUserLogsGroupListByParam(SopUserLogsParam param) {
+        List<SopUserLogsVO> list = sopUserLogsMapper.selectSopUserLogsGroupListByParam(param);
+        return resultSopUserLogsList(list);
+    }
+
+    private List<SopUserLogsVO> resultSopUserLogsList( List<SopUserLogsVO> list){
         List<String> chatIdList = PubFun.listToNewList(list, SopUserLogsVO::getChatId);
         if(!chatIdList.isEmpty()){
             List<QwGroupChat> qwGroupChatList = qwGroupChatService.selectQwGroupChatByChatIds(chatIdList.toArray(new String[0]));
@@ -625,6 +644,7 @@ public class SopUserLogsServiceImpl  implements ISopUserLogsService {
                 e.setChatName(groupChatMap.get(e.getChatId()).getName());
             });
         }
+
         return list;
     }
 

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

@@ -65,3 +65,5 @@ cloud_host:
   company_name: 润天
 headerImg:
   imgUrl: https://jz-cos-1356808054.cos.ap-chengdu.myqcloud.com/fs/20250515/0877754b59814ea8a428fa3697b20e68.png
+ipad:
+  ipadUrl: http://ipad.cdwjyyh.com

+ 2 - 1
fs-service/src/main/resources/application-config-druid-hcl.yml

@@ -73,4 +73,5 @@ cloud_host:
 #看课授权时显示的头像
 headerImg:
   imgUrl: https://jz-cos-1356808054.cos.ap-chengdu.myqcloud.com/fs/20250515/0877754b59814ea8a428fa3697b20e68.png
-
+ipad:
+  ipadUrl: http://ipad.cdwjyyh.com

+ 2 - 1
fs-service/src/main/resources/application-config-druid-hdt.yml

@@ -65,6 +65,7 @@ cloud_host:
 #看课授权时显示的头像
 headerImg:
   imgUrl: https://jz-cos-1356808054.cos.ap-chengdu.myqcloud.com/fs/20250515/0877754b59814ea8a428fa3697b20e68.png
-
+ipad:
+  ipadUrl: http://ipad.cdwjyyh.com
 
 

+ 2 - 1
fs-service/src/main/resources/application-config-druid-hzyy.yml

@@ -73,5 +73,6 @@ cloud_host:
 #看课授权时显示的头像
 headerImg:
   imgUrl: https://jz-cos-1356808054.cos.ap-chengdu.myqcloud.com/fs/20250515/0877754b59814ea8a428fa3697b20e68.png
-
+ipad:
+  ipadUrl: http://ipad.cdwjyyh.com
 

+ 2 - 1
fs-service/src/main/resources/application-config-druid-jnmy.yml

@@ -72,7 +72,8 @@ cloud_host:
   company_name: 金牛明医
 headerImg:
   imgUrl: https
-
+ipad:
+  ipadUrl: http://ipad.cdwjyyh.com
 
 
 

+ 2 - 1
fs-service/src/main/resources/application-config-druid-jzzx.yml

@@ -72,5 +72,6 @@ cloud_host:
   company_name: 九州在线
 headerImg:
   imgUrl: https://jz-cos-1356808054.cos.ap-chengdu.myqcloud.com/fs/20250515/0877754b59814ea8a428fa3697b20e68.png
-
+ipad:
+  ipadUrl: http://ipad.cdwjyyh.com
 

+ 2 - 1
fs-service/src/main/resources/application-config-druid-sxjz.yml

@@ -65,6 +65,7 @@ cloud_host:
 #看课授权时显示的头像
 headerImg:
   imgUrl: https://jz-cos-1356808054.cos.ap-chengdu.myqcloud.com/fs/20250515/0877754b59814ea8a428fa3697b20e68.png
-
+ipad:
+  ipadUrl: http://ipad.cdwjyyh.com
 
 

+ 2 - 1
fs-service/src/main/resources/application-config-druid-yzt.yml

@@ -65,6 +65,7 @@ cloud_host:
 #看课授权时显示的头像
 headerImg:
   imgUrl: https://cos.his.cdwjyyh.com/fs/20250522/28c3d8d5c42a4bcdb85292c2e5eb2a37.png
-
+ipad:
+  ipadUrl: http://ipad.cdwjyyh.com
 
 

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

@@ -54,4 +54,5 @@ nuonuo:
   secret: A2EB20764D304D16
 headerImg:
   imgUrl: https://jz-cos-1356808054.cos.ap-chengdu.myqcloud.com/fs/20250515/0877754b59814ea8a428fa3697b20e68.png
-
+ipad:
+  ipadUrl: http://ipad.cdwjyyh.com

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

@@ -67,7 +67,8 @@ cloud_host:
 #看课授权时显示的头像
 headerImg:
   imgUrl: https://fs-1346741853.cos.ap-chengdu.myqcloud.com/fs/20250323/6189704f2e134b84ad9c9e7c9999f103.jpg
-
+ipad:
+  ipadUrl: http://ipad.cdwjyyh.com
 
 
 

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

@@ -2,14 +2,14 @@
 spring:
     # redis 配置
     redis:
-#        host: 172.27.0.6
-        host: 127.0.0.1
+        host: 172.27.0.6
+#        host: 127.0.0.1
         port: 6379
         # 数据库索引
         database: 0
         # 密码
-#        password: myhk888777666.
-        password:
+        password: myhk888777666.
+#        password:
         # 连接超时时间
         timeout: 10s
         lettuce:

+ 8 - 0
fs-service/src/main/resources/mapper/his/FsPackageOrderMapper.xml

@@ -309,4 +309,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectFsPackageByOrderId" resultType="com.fs.his.domain.FsPackage">
         SELECT fp.* FROM fs_package_order fpo LEFT JOIN fs_package fp ON fpo.package_id = fp.package_id WHERE fpo.order_id = #{packageOrderId}
     </select>
+    <select id="getNewOrder" resultType="com.fs.his.dto.PackageOrderDTO">
+        SELECT O.pay_time AS payTime, O.create_time AS createTime , O.order_sn AS orderSn , O.user_id AS userId ,
+               U.nick_name AS fsUserName , P.package_name AS packageName
+        FROM fs_barrage_package_order O
+            LEFT JOIN fs_user U ON O.user_id = U.user_id
+            LEFT JOIN fs_package P ON O.package_id = P.package_id
+        where O.is_pay = 1 ORDER BY RAND() desc LIMIT 20
+    </select>
 </mapper>

+ 1 - 1
fs-service/src/main/resources/mapper/qw/QwWatchLogMapper.xml

@@ -38,7 +38,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             resultType="com.fs.qw.vo.QwWatchLogAllStatisticsListVO">
         select
         any_value(company_id) as company_id,
-        company_user_id,line_time as create_time,
+        company_user_id,MIN(line_time) as create_time,
         COUNT(CASE WHEN day = 0 and status in (1,2) THEN 1 END) AS firstOnline,
         COUNT(CASE WHEN day = 0 and status=2 THEN 1 END) AS firstOver,
         COUNT(CASE WHEN day = 1 and status in (1,2) THEN 1 END) AS d1Online,

+ 6 - 2
fs-service/src/main/resources/mapper/sop/QwSopMapper.xml

@@ -17,6 +17,7 @@
         <result property="tags"    column="tags"    />
         <result property="excludeTags"    column="exclude_tags"    />
         <result property="startTime"    column="start_time"  />
+        <result property="filterMode"    column="filter_mode"  />
         <result property="filterType"    column="filter_type"    />
         <result property="tempId"    column="temp_id"    />
         <result property="corpId"    column="corp_id"    />
@@ -34,7 +35,10 @@
     </resultMap>
 
     <sql id="selectQwSopVo">
-        select *  from qw_sop
+        select id,name,status,type,qw_user_ids,create_by,create_time,company_id,send_type,tags,exclude_tags,start_time,
+               filter_mode,filter_type,temp_id,corp_id,expiry_time,is_auto_sop,auto_sop_time,min_conversion_day,
+               max_conversion_day,min_send,max_send,stop_time,is_rating,course_day,open_comment_status
+        from qw_sop
     </sql>
 
     <select id="selectQwSopAutoByTagsByForeach"  resultType="com.fs.qw.vo.QwSopRuleTimeVO">
@@ -248,7 +252,7 @@
         and send_type in(2,3)
         order by create_time desc
     </select>
-    <select id="selectQwSopById" parameterType="String" resultMap="QwSopResult">
+    <select id="selectQwSopById" parameterType="String" resultType="com.fs.sop.domain.QwSop">
         <include refid="selectQwSopVo"/>
         where id = #{id}
     </select>

+ 9 - 0
fs-service/src/main/resources/mapper/sop/SopUserLogsInfoMapper.xml

@@ -172,6 +172,15 @@
             and external_id = #{data.externalId}
     </delete>
 
+    <delete id="deleteSopUserLogsInfoByUserLogsIds" parameterType="map">
+        DELETE FROM sop_user_logs_info  WHERE user_logs_id IN
+        <foreach item="userLogsId" index="index" collection="userLogsIds"
+                 open="(" separator="," close=")">
+            #{userLogsId}
+        </foreach>
+    </delete>
+
+
 
     <!-- 根据ID查询单条记录 -->
     <select id="selectById" parameterType="String" resultMap="SopUserLogsInfoResult">

+ 7 - 0
fs-service/src/main/resources/mapper/sop/SopUserLogsMapper.xml

@@ -50,6 +50,13 @@
         DELETE FROM sop_user_logs  WHERE id = #{id}
     </delete>
 
+    <delete id="deleteSopUserLogsByIds" parameterType="String">
+        delete from sop_user_logs where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
     <insert id="insertSopUserLogsByDate" parameterType="com.fs.sop.params.SopUserLogsParamByDate" useGeneratedKeys="false" >
         insert into sop_user_logs
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 3 - 1
fs-user-app/src/main/java/com/fs/app/controller/PackageController.java

@@ -86,6 +86,7 @@ public class PackageController extends AppBaseController {
             }
         } else {
             log.info("zyp \n【套餐包不存在】:{}", packageId);
+            return R.error("套餐包不存在");
         }
 
         FsPackageDetailVO vo = new FsPackageDetailVO();
@@ -98,7 +99,8 @@ public class PackageController extends AppBaseController {
                     fsPackage.setImgUrl(s);
                 }
             } catch (Exception e) {
-                throw new RuntimeException(e);
+//                throw new RuntimeException(e);
+                log.error(e.getMessage());
             }
 
         }

+ 36 - 0
fs-user-app/src/main/java/com/fs/app/controller/PackageOrderController.java

@@ -11,6 +11,7 @@ import com.fs.common.utils.StringUtils;
 import com.fs.his.domain.*;
 import com.fs.his.dto.FsInquiryOrderPatientDTO;
 import com.fs.his.dto.FsStoreOrderAddressDTO;
+import com.fs.his.dto.PackageOrderDTO;
 import com.fs.his.param.*;
 import com.fs.his.service.*;
 import com.fs.his.vo.*;
@@ -25,6 +26,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.*;
+import java.util.concurrent.ThreadLocalRandom;
 
 
 @Api("套餐订单接口")
@@ -198,4 +200,38 @@ public class PackageOrderController extends  AppBaseController {
         return R.ok().put("count",count);
     }
 
+    @ApiOperation("/根据套餐id查询最新的20条订单")
+    @GetMapping("/getNewOrderByPackageId")
+    public R getNewOrderByPackageId(@RequestParam("packageId") Long packageId){
+        List<PackageOrderDTO> newOrderByPackageId = packageOrderService.getNewOrder();
+
+        // 当前时间 和 10分钟前
+        long nowMillis = System.currentTimeMillis();
+        long tenMinutesAgoMillis = nowMillis - 10 * 60 * 1000;
+
+        for (PackageOrderDTO dto : newOrderByPackageId) {
+            // 在10分钟内随机一个时间戳
+            long randomMillis = ThreadLocalRandom.current().nextLong(tenMinutesAgoMillis, nowMillis);
+            dto.setPayTime(new Date(randomMillis));
+            //用户名脱敏
+            // 脱敏 fsUserName 字段(保留首尾)
+            String fsUserName = dto.getFsUserName();
+            if (fsUserName != null && fsUserName.length() > 2) {
+                StringBuilder sb = new StringBuilder();
+                sb.append(fsUserName.charAt(0)); // 第一个字符
+                for (int i = 1; i < fsUserName.length() - 1; i++) {
+                    sb.append("*"); // 中间全部 *
+                }
+                sb.append(fsUserName.charAt(fsUserName.length() - 1)); // 最后一个字符
+                dto.setFsUserName(sb.toString());
+            }
+            // 如果只有 2 个字符,不需要加星
+            else if (fsUserName != null && fsUserName.length() == 2) {
+                dto.setFsUserName(fsUserName);
+            }
+        }
+
+        return R.ok().put("data", newOrderByPackageId);
+    }
+
 }