Pārlūkot izejas kodu

红德堂-看课调试

Long 1 dienu atpakaļ
vecāks
revīzija
c2b40b06c3

+ 5 - 5
fs-company-app/pom.xml

@@ -17,11 +17,11 @@
     <dependencies>
 
         <!-- spring-boot-devtools -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-devtools</artifactId>
-            <optional>true</optional> <!-- 表示依赖不会传递 -->
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>org.springframework.boot</groupId>-->
+<!--            <artifactId>spring-boot-devtools</artifactId>-->
+<!--            <optional>true</optional> &lt;!&ndash; 表示依赖不会传递 &ndash;&gt;-->
+<!--        </dependency>-->
         <!-- swagger2-->
         <dependency>
             <groupId>io.springfox</groupId>

+ 20 - 0
fs-company-app/src/main/java/com/fs/app/controller/FsUserCourseVideoController.java

@@ -10,9 +10,11 @@ import com.fs.common.core.domain.ResponseResult;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.exception.ServiceException;
 import com.fs.common.utils.StringUtils;
+import com.fs.company.domain.Company;
 import com.fs.company.domain.CompanyMiniapp;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.service.ICompanyMiniappService;
+import com.fs.company.service.ICompanyService;
 import com.fs.company.service.ICompanyUserService;
 import com.fs.course.domain.FsUserCoursePeriod;
 import com.fs.course.dto.BatchSendCourseDTO;
@@ -39,6 +41,7 @@ import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -81,6 +84,8 @@ public class FsUserCourseVideoController extends AppBaseController {
     private IFsImMsgSendLogService imMsgSendLogService;
     @Autowired
     private ICompanyMiniappService companyMiniAppService;
+    @Autowired
+    private ICompanyService companyService;
 
     @Login
     @GetMapping("/pageList")
@@ -275,6 +280,21 @@ public class FsUserCourseVideoController extends AppBaseController {
         return ResponseResult.ok(courseLinkService.getGotoWxAppLink(linkStr,appid));
     }
 
+    @GetMapping("/getGotoAppLink")
+    @ApiOperation("获取跳转微信小程序的链接地址")
+    public ResponseResult<String> getGotoWxAppLink(String linkStr, Long companyId) {
+        Company company = companyService.selectCompanyById(companyId);
+        String appid;
+        if (CollectionUtils.isNotEmpty(company.getMiniAppMaster())){
+            appid = company.getMiniAppMaster().get(0);
+        }else if (CollectionUtils.isNotEmpty(company.getMiniAppServer())){
+            appid = company.getMiniAppServer().get(0);
+        }else {
+            return ResponseResult.fail(500,"请在后台配置主备小程序!");
+        }
+        return ResponseResult.ok(courseLinkService.getGotoWxAppLink(linkStr,appid));
+    }
+
     @ApiOperation("会员批量发送课程消息")
     @PostMapping("/batchSendCourse")
     public OpenImResponseDTO batchSendCourse(@RequestBody BatchSendCourseDTO batchSendCourseDTO) throws JsonProcessingException {

+ 5 - 5
fs-company/pom.xml

@@ -17,11 +17,11 @@
 
     <dependencies>
         <!-- spring-boot-devtools -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-devtools</artifactId>
-            <optional>true</optional> <!-- 表示依赖不会传递 -->
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>org.springframework.boot</groupId>-->
+<!--            <artifactId>spring-boot-devtools</artifactId>-->
+<!--            <optional>true</optional> &lt;!&ndash; 表示依赖不会传递 &ndash;&gt;-->
+<!--        </dependency>-->
         <!-- swagger2-->
         <dependency>
             <groupId>io.springfox</groupId>

+ 2 - 1
fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopLogsTaskServiceImpl.java

@@ -1068,7 +1068,8 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
 
                     setting.setLinkUrl(linkByApp.getSortLink().replaceAll("^[\\s\\u2005]+", ""));
                     setting.setAppLinkUrl(linkByApp.getAppMsgLink().replaceAll("^[\\s\\u2005]+", ""));
-
+                    setting.setCourseUrl(setting.getLinkImageUrl());
+                    setting.setTitle(setting.getLinkTitle());
                     break;
                 //自定义小程序
                 case "10":

+ 1 - 1
fs-service/src/main/java/com/fs/course/dto/BatchSendCourseDTO.java

@@ -70,7 +70,7 @@ public class BatchSendCourseDTO implements Serializable {
     private Long projectId;
 
     @ApiModelProperty(value = "是否催课", required = true)
-    private Boolean isUrgeCourse;
+    private Boolean isUrgeCourse = false;
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "催课时间")

+ 3 - 3
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseServiceImpl.java

@@ -133,8 +133,8 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
 
     private static final String userRealLink = "/pages/user/users/becomeVIP?";
 
-    private static final String appRealLink = "/#/pages_course/videovip?course=";
-    public static final String appShortLink = "/#/pages_course/videovip?s=";
+    private static final String appRealLink = "/pages_course/videovip?course=";
+    public static final String appShortLink = "/pages_course/videovip?s=";
 
     /**
      * 查询课程
@@ -756,7 +756,7 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
         int i = fsCourseLinkMapper.insertFsCourseLink(link);
         if (i > 0){
             String domainName = getDomainName(param.getCompanyUserId(), config);
-            String sortLink = domainName + appShortLink + link.getLink();
+            String sortLink = domainName + link.getRealLink();
             return R.ok().put("url", sortLink).put("link", random);
         }
         return R.error("生成链接失败!");

+ 30 - 0
fs-service/src/main/java/com/fs/his/domain/FsUser.java

@@ -96,6 +96,15 @@ public class FsUser extends BaseEntity
     private Long companyId;
     private Long companyUserId;
     private String companyUserName;
+
+    /** 公司用户ID,逗号拼接*/
+    @TableField(exist = false)
+    private String companyUserIdMulti;
+
+    /** 公司用户ID,用于查询*/
+    @TableField(exist = false)
+    private String[] companyUserIds;
+
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "推线日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date registerDate;
@@ -155,10 +164,25 @@ public class FsUser extends BaseEntity
 
     /** 下单次数 */
     private Long orderCount;
+
+    /** 累计成交总额 */
+    @Excel(name = "累计成交总额")
+    private BigDecimal totalAmount;
+
     /**
      * 企微销售ID
      * **/
     private Long qwUserId;
+
+    /**
+     * 小程序appId,多个用逗号分隔
+     */
+    private String appId;
+
+
+    /** 推广上级用户ID */
+    private Long spreadUserId;
+
     public void setNickName(String nickname)
     {
         if(StringUtils.isNotEmpty(nickname)){
@@ -199,6 +223,12 @@ public class FsUser extends BaseEntity
     @TableField(exist = false)
     private String nickname;
 
+    /**
+     * 昵称-精确查询
+     * **/
+    @TableField(exist = false)
+    private String nicknameExact;
+
     public String getNickname() {
         return nickname;
     }

+ 3 - 1
fs-service/src/main/java/com/fs/his/dto/PayloadDTO.java

@@ -1,5 +1,6 @@
 package com.fs.his.dto;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -12,6 +13,7 @@ public class PayloadDTO implements Serializable {
     private String description;
 
     @Data
+    @JsonInclude(JsonInclude.Include.NON_NULL)
     public static class Extension implements Serializable{
         private String title;
         private String patientName;
@@ -33,7 +35,7 @@ public class PayloadDTO implements Serializable {
         private Long companyId;
         private Long companyUserId;
         private Long doctorId;
-
+        private Long userInformationId;
     }
 
 }

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

@@ -84,4 +84,9 @@ public interface OpenIMService {
 
     OpenImResponseDTO sendInquiryUtil(String sendID, String recvID, Integer contentType, String payloadData,String inquiryName,String type,Long companyId,Long companyUserId,String doctorId);
 
+
+    OpenImResponseDTO sendUserInformation(Long userId,Long doctorId,Long userInformationId);
+
+    OpenImResponseDTO doctorSendMsgToUser(Long userId,Long doctorId);
+
 }

+ 54 - 2
fs-service/src/main/java/com/fs/im/service/impl/OpenIMServiceImpl.java

@@ -1099,7 +1099,7 @@ public class OpenIMServiceImpl implements OpenIMService {
         FsUserCourse fsUserCourse = fsUserCourseMapper.selectFsUserCourseByCourseId(batchSendCourseDTO.getCourseId());
         Long project = fsUserCourse != null ? fsUserCourse.getProject() : null;
         long planSendTimeStamp;
-        if(batchSendCourseDTO.getSendType() == 1 && batchSendCourseDTO.getSendTime() != null && batchSendCourseDTO.getSendTime().compareTo(new Date()) > 0){
+        if(Objects.nonNull(batchSendCourseDTO.getSendType()) &&batchSendCourseDTO.getSendType() == 1 && batchSendCourseDTO.getSendTime() != null && batchSendCourseDTO.getSendTime().compareTo(new Date()) > 0){
             planSendTimeStamp = batchSendCourseDTO.getSendTime().getTime();
         } else {
             planSendTimeStamp = System.currentTimeMillis();
@@ -1109,7 +1109,7 @@ public class OpenIMServiceImpl implements OpenIMService {
         OpenImBatchMsgDTO openImBatchMsgDTO = makeOpenImBatchMsgDTO(batchSendCourseDTO, courseUrl, objectMapper, userIds, planSendTimeStamp, "发课");
 
         int sendType;
-        if(batchSendCourseDTO.getSendType() == 1 && batchSendCourseDTO.getSendTime() != null && batchSendCourseDTO.getSendTime().compareTo(new Date()) > 0) {
+        if(Objects.nonNull(batchSendCourseDTO.getSendType())&&batchSendCourseDTO.getSendType() == 1 && batchSendCourseDTO.getSendTime() != null && batchSendCourseDTO.getSendTime().compareTo(new Date()) > 0) {
             sendType = 1; //定时
         } else {
             sendType = 2; //实时
@@ -1575,4 +1575,56 @@ public class OpenIMServiceImpl implements OpenIMService {
             return null;
         }
     }
+
+    //发送用户信息采集数据
+    @Override
+    public OpenImResponseDTO sendUserInformation(Long userId,Long doctorId,Long userInformationId) {
+        try {
+            accountCheck("U"+userId,"1");
+        OpenImMsgDTO openImMsgDTO = new OpenImMsgDTO();
+        ObjectMapper objectMapper = new ObjectMapper();
+        openImMsgDTO.setSendID("U"+userId);
+        openImMsgDTO.setRecvID("D"+doctorId);
+        //110为im的自定义消息类型
+        openImMsgDTO.setContentType(110);
+        openImMsgDTO.setSenderPlatformID(5);
+        openImMsgDTO.setSessionType(1);
+        OpenImMsgDTO.Content content = new OpenImMsgDTO.Content();
+        //content.setContent(ext);
+        PayloadDTO payload = new PayloadDTO();
+        payload.setDescription("userInformation");
+        payload.setData("userInformation");
+        PayloadDTO.Extension extension = new PayloadDTO.Extension();
+
+        extension.setDoctorId(doctorId);
+        extension.setUserInformationId(userInformationId);
+        payload.setExtension(extension);
+        OpenImMsgDTO.ImData imData = new OpenImMsgDTO.ImData();
+
+        imData.setPayload(payload);
+
+        String imJson = objectMapper.writeValueAsString(imData);
+        content.setData(imJson);
+        openImMsgDTO.setContent(content);
+        return openIMSendMsg(openImMsgDTO);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    @Override
+    public OpenImResponseDTO doctorSendMsgToUser(Long userId, Long doctorId) {
+        OpenImMsgDTO openImMsgDTO = new OpenImMsgDTO();
+        ObjectMapper objectMapper = new ObjectMapper();
+        openImMsgDTO.setRecvID("U"+userId);
+        openImMsgDTO.setSendID("D"+doctorId);
+        openImMsgDTO.setContentType(101);
+        openImMsgDTO.setSenderPlatformID(5);
+        openImMsgDTO.setSessionType(1);
+        OpenImMsgDTO.Content content = new OpenImMsgDTO.Content();
+        content.setContent("您的用户信息已确认");
+        openImMsgDTO.setContent(content);
+        return openIMSendMsg(openImMsgDTO);
+    }
 }

+ 10 - 1
fs-service/src/main/java/com/fs/qw/service/impl/AsyncSopTestService.java

@@ -3,6 +3,7 @@ package com.fs.qw.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fs.common.utils.PubFun;
+import com.fs.common.utils.StringUtils;
 import com.fs.course.domain.FsCourseSopAppLink;
 import com.fs.course.mapper.FsCourseSopAppLinkMapper;
 import com.fs.gtPush.service.uniPush2Service;
@@ -510,7 +511,15 @@ public class AsyncSopTestService {
 
         setting.forEach(item->{
             try {
-                push2Service.pushSopAppLinkMsgByExternalIM(cropId,item.getLinkTitle(),item.getLinkDescribe(),item.getLinkImageUrl(),item.getAppLinkUrl(),companyUserId,fsUserId);
+                String linkImageUrl = item.getLinkImageUrl();
+                String linkTitle = item.getLinkTitle();
+                if (StringUtils.isBlank(linkImageUrl)) {
+                    linkImageUrl = item.getCourseUrl();
+                }
+                if (StringUtils.isBlank(linkTitle)) {
+                    linkTitle = item.getTitle();
+                }
+                push2Service.pushSopAppLinkMsgByExternalIM(cropId, linkTitle,item.getLinkDescribe(), linkImageUrl,item.getAppLinkUrl(),companyUserId,fsUserId);
             } catch (JsonProcessingException e) {
                 e.printStackTrace();
             }

+ 10 - 0
fs-service/src/main/java/com/fs/qw/vo/QwSopTempSetting.java

@@ -112,6 +112,9 @@ public class QwSopTempSetting implements Serializable{
             /** 小程序page路径 */
             private String miniprogramPage;
 
+            /** 直播间Id*/
+            private Long liveId;
+
             //文件地址
             private String fileUrl;
             //视频地址
@@ -142,6 +145,13 @@ public class QwSopTempSetting implements Serializable{
             //视频ID
             private Long videoId;
 
+            //封面图片地址 app用的参数
+            private String courseUrl;
+
+            //app显示标题 app用的参数
+            private String title;
+
+
             @Override
             public Setting clone() {
                 try {

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

@@ -162,7 +162,7 @@ token:
 openIM:
     secret: openIM123
     userID: imAdmin
-    url: web.im.ysya.top
+    url: https://web.jnmyim.ylrzfs.com/api
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
 #是否使用新im

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

@@ -153,7 +153,7 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
-    url: https://web.im.fbylive.com/api
+    url: https://web.jnmyim.ylrzfs.com/api
 #是否使用新im
 im:
     type: NONE

+ 5 - 5
fs-user-app/pom.xml

@@ -20,11 +20,11 @@
             <artifactId>spring-boot-starter-websocket</artifactId>
         </dependency>
         <!-- spring-boot-devtools -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-devtools</artifactId>
-            <optional>true</optional> <!-- 表示依赖不会传递 -->
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>org.springframework.boot</groupId>-->
+<!--            <artifactId>spring-boot-devtools</artifactId>-->
+<!--            <optional>true</optional> &lt;!&ndash; 表示依赖不会传递 &ndash;&gt;-->
+<!--        </dependency>-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-cache</artifactId>