Pārlūkot izejas kodu

Merge branch 'master' into 企微聊天

Long 1 nedēļu atpakaļ
vecāks
revīzija
e7d3d784ce

+ 17 - 4
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -3,6 +3,9 @@ package com.fs.his.task;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.service.impl.SmsServiceImpl;
 import com.fs.common.utils.DateUtils;
@@ -40,10 +43,7 @@ import com.fs.fastgptApi.vo.AudioVO;
 import com.fs.gtPush.mapper.PushLogMapper;
 import com.fs.his.config.FsSysConfig;
 import com.fs.his.config.StoreConfig;
-import com.fs.his.domain.FsInquiryOrder;
-import com.fs.his.domain.FsStoreAfterSales;
-import com.fs.his.domain.FsStoreOrder;
-import com.fs.his.domain.FsUser;
+import com.fs.his.domain.*;
 import com.fs.his.dto.FsInquiryOrderPatientDTO;
 import com.fs.his.enums.FsStoreOrderLogEnum;
 import com.fs.his.enums.FsStoreOrderStatusEnum;
@@ -72,6 +72,7 @@ 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.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.time.LocalDate;
@@ -192,6 +193,8 @@ public class Task {
 
     @Autowired
     private QwRestrictionPushRecordMapper qwRestrictionPushRecordMapper;
+    @Autowired
+    private FsUserOperationLogMapper fsUserOperationLogMapper;
 
     public static final String SOP_TEMP_VOICE_KEY = "sop:tempVoice";
 
@@ -1518,5 +1521,15 @@ public class Task {
         }
     }
 
+    //定时删除行为轨迹记录 (数据量太大 默认保留一天的)
+    @Scheduled(cron = "0 0 1 * * ?")
+    //@Scheduled(cron = "0 * * * * ?") //测试每分钟执行一次
+    public void deleteUserOperationLog(){
+        LambdaQueryWrapper<FsUserOperationLog> wrapper = new LambdaQueryWrapper<>();
+        wrapper.lt(FsUserOperationLog::getCreateTime, DateUtils.addDays(new Date(), -1));
+        int deleteCount  = fsUserOperationLogMapper.delete(wrapper);
+        log.info("定时删除行为轨迹记录 {} 条", deleteCount);
+    }
+
 
 }

+ 6 - 1
fs-admin/src/main/resources/logback.xml

@@ -76,7 +76,12 @@
 	<!-- Spring日志级别控制  -->
 	<logger name="org.springframework" level="warn" />
 
-	<root level="info">
+    <!-- log4j2.xml -->
+    <Logger name="com.fs.his.mapper" level="debug"/>
+    <Logger name="org.apache.ibatis" level="debug"/>
+
+
+    <root level="info">
 		<appender-ref ref="console" />
 	</root>
 

+ 8 - 8
fs-ipad-task/src/main/java/com/fs/app/service/IpadSendServer.java

@@ -297,20 +297,20 @@ public class IpadSendServer {
 
         if (qwSopLogs.getSendType() != 12 && noSop) {
             // 客户的信息
-            QwExternalContactHParam contactHParam = new QwExternalContactHParam();
-            contactHParam.setUserId(qwUser.getQwUserId().trim());
-            contactHParam.setExternalUserId(qwSopLogs.getExternalUserId().trim());
-            contactHParam.setCorpId(qwUser.getCorpId().trim());
+//            QwExternalContactHParam contactHParam = new QwExternalContactHParam();
+//            contactHParam.setUserId(qwUser.getQwUserId().trim());
+//            contactHParam.setExternalUserId(qwSopLogs.getExternalUserId().trim());
+//            contactHParam.setCorpId(qwUser.getCorpId().trim());
             Integer courseType = setting.getCourseType();
             if (setting.getType() == 2 && courseType != 0) {// 课程消息,进行复杂的条件判断
-                log.debug("企微查询:{}", contactHParam);
-                Long qwExternalContactId = qwExternalContactMapper.getQwExternalContactId(contactHParam);
+//                log.debug("企微查询:{}", contactHParam);
+//                Long qwExternalContactId = qwExternalContactMapper.getQwExternalContactId(contactHParam);
                 FsCourseWatchLog watchLog = watchLogService.getWatchCourseLogVideoBySop(
                         setting.getVideoId().longValue(),
                         String.valueOf(qwUser.getId()),
-                        qwExternalContactId
+                        qwSopLogs.getExternalId()
                 );
-                log.debug("ID:{}-看课记录参数:videoID:{}, qwUserID:{}, extID:{}", qwSopLogs.getId(), setting.getVideoId().longValue(), qwUser.getId(), qwExternalContactId);
+                log.debug("ID:{}-看课记录参数:videoID:{}, qwUserID:{}, extID:{}", qwSopLogs.getId(), setting.getVideoId().longValue(), qwUser.getId(), qwSopLogs.getExternalId());
                 log.debug("ID:{}-看课记录:{}", qwSopLogs.getId(), watchLog);
                 String logId = qwSopLogs.getId();
                 if (watchLog != null) {

+ 18 - 4
fs-service/src/main/java/com/fs/course/mapper/FsCourseWatchLogMapper.java

@@ -218,6 +218,12 @@ public interface FsCourseWatchLogMapper extends BaseMapper<FsCourseWatchLog> {
     List<FsCourseWatchLog> selectFsCourseWatchLogFinish();
 
     @Select({"<script> " +
+            "select t.* " +
+            "<if test= 'sendType != 1 '> " +
+            " ,concat(round(if(t.send_number=0,0,(t.on_line_num/t.send_number)*100),2),'%') on_line_rate" +
+            " ,concat(round(if(t.send_number=0,0,(t.type2/t.send_number)*100),2),'%') finished_rate" +
+            "</if> " +
+            "from (" +
             "SELECT \n" +
             "o.video_id,o.company_id,o.qw_user_id,DATE(o.create_time) create_time," +
             "<if test= 'sendType != 1 '> " +
@@ -235,10 +241,17 @@ public interface FsCourseWatchLogMapper extends BaseMapper<FsCourseWatchLog> {
             "  SUM(CASE WHEN o.log_type = '1' THEN 1 ELSE 0 END) +\n" +
             "  SUM(CASE WHEN o.log_type = '2' THEN 1 ELSE 0 END) +\n" +
             "  SUM(CASE WHEN o.log_type = '4' THEN 1 ELSE 0 END)\n" +
-            ") AS on_line_num\n" +
-            "FROM fs_course_watch_log o\n" +
+            ") AS on_line_num " +
+            "<if test= 'sendType != 1 '> " +
+            " ,count(o.log_id) send_number" +
+            " ,sum(if((o.user_id is not null or o.user_id>0) and o.log_type=3,1,0)) is_user_wait_number" +
+            " ,sum(if((o.user_id is null or o.user_id=0) and o.log_type=3,1,0)) no_user_wait_number" +
+            " ,sum(ifnull(fcr.amount,0)) red_amount" +
+            "</if> " +
+            "FROM fs_course_watch_log o " +
             "<if test= 'sendType != 1 '> " +
-            " LEFT JOIN qw_user qu on qu.id=o.qw_user_id\n" +
+            " LEFT JOIN qw_user qu on qu.id=o.qw_user_id " +
+            " LEFT JOIN fs_course_red_packet_log fcr on o.user_id = fcr.user_id and fcr.video_id = o.video_id" +
             "</if>\n" +
             "LEFT JOIN fs_user_course_video v on v.video_id=o.video_id \n" +
             "LEFT JOIN fs_user_course uc on uc.course_id=v.course_id\n" +
@@ -275,7 +288,8 @@ public interface FsCourseWatchLogMapper extends BaseMapper<FsCourseWatchLog> {
             " o.company_user_id," +
             "</if>\n" +
             "DATE(o.create_time)\n" +
-            "ORDER BY o.video_id ,DATE(o.create_time) \n"+
+            "ORDER BY o.video_id ,DATE(o.create_time) " +
+            ") t \n"+
             "</script>"})
     List<FsCourseWatchLogStatisticsListVO> selectFsCourseWatchLogStatisticsListVO(FsCourseWatchLogStatisticsListParam param);
 

+ 18 - 0
fs-service/src/main/java/com/fs/course/vo/FsCourseWatchLogStatisticsListVO.java

@@ -46,4 +46,22 @@ public class FsCourseWatchLogStatisticsListVO {
     private Long companyUserId;
     @Excel(name = "销售名称")
     private String companyUserName;
+
+    /** 发课数 */
+    private String  sendNumber;
+
+    /** 已注册用户待看课数 */
+    private String  isUserWaitNumber;
+
+    /** 未注册用户待看课数 */
+    private String  noUserWaitNumber;
+
+    /** 上线率 */
+    private String  onLineRate;
+
+    /** 完课率 */
+    private String  finishedRate;
+
+    /** 消耗红包金额 */
+    private String  redAmount;
 }

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

@@ -67,7 +67,7 @@ fs :
   h5CommonApi: http://119.29.195.254:8010
   jwt:
     # 加密秘钥
-    secret: f4e2e52034348f86b67cde581c0f9eb5
+    secret: jnsyj-zxqzbl
     # token有效时长,7天,单位秒
     expire: 31536000
     header: AppToken

+ 9 - 4
fs-service/src/main/resources/mapper/hisStore/FsStoreCouponScrmMapper.xml

@@ -39,10 +39,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="packageCateIds != null  and packageCateIds != ''"> and package_cate_ids = #{packageCateIds}</if>
             <if test="type != null "> and type = #{type}</if>
             <if test="isDel != null "> and is_del = #{isDel}</if>
-            <if test="beginTime != null and beginTime != ''">
-            and date_format(create_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d') </if>
-            <if test="endTime != null and endTime != ''">
-            and date_format(create_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d') </if>
+            <if test="params != null">
+                <if test="params.beginTime != null and params.beginTime != ''">
+                    and date_format(create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
+                </if>
+                <if test="params.endTime != null and params.endTime != ''">
+                    and date_format(create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
+                </if>
+            </if>
+
         </where>
         order by coupon_price
     </select>