Ver código fonte

Merge remote-tracking branch 'origin/master'

yfh 5 dias atrás
pai
commit
5d09775dd7

+ 5 - 1
fs-admin/src/main/java/com/fs/his/controller/FsUserController.java

@@ -190,7 +190,11 @@ public class FsUserController extends BaseController
         if(StringUtils.isNotEmpty(fsUser.getPhone())){
             fsUser.setPhone(encryptPhone(fsUser.getPhone()));
         }
-        List<FsUserVO> list = fsUserService.selectFsUserVOListByProject(fsUser);
+//        List<FsUserVO> list = fsUserService.selectFsUserVOListByProject(fsUser);
+
+        // xgb sql执行太慢,优化修改
+        List<FsUserVO> list = fsUserService.selectFsUserVOListByProjectNew(fsUser);
+
         SysRole sysRole = isCheckPermission();
         for (FsUserVO fsUserVO : list) {
             if(fsUserVO.getPhone() != null&&fsUserVO.getPhone()!=""){

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

@@ -443,4 +443,6 @@ public interface FsUserMapper
      * 统计用户看课数据(课程观看次数、课程完播次数)
      * */
     ExternalWatchStatsVO countExternalWatchStats(UserStatisticsCommonParam param);
+
+    List<FsUserVO> selectFsUserVOListByProjectNew(@Param("maps") FsUser fsUser);
 }

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

@@ -221,4 +221,6 @@ public interface IFsUserService
     void handleFsUserWx(FsUser user, LoginMaWxParam param, WxMaJscode2SessionResult session);
 
     R removeUser(Long id);
+
+    List<FsUserVO> selectFsUserVOListByProjectNew(FsUser fsUser);
 }

+ 31 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java

@@ -1250,6 +1250,35 @@ public class FsUserServiceImpl implements IFsUserService {
         return fsUserMapper.selectFsUserVOListByProject(fsUser);
     }
 
+    /**
+     * @Description: 原方法 selectFsUserVOListByProject sql执行太慢,优化修改
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2025/11/10 10:34
+     */
+    @Override
+    public List<FsUserVO> selectFsUserVOListByProjectNew(FsUser fsUser) {
+
+        List<FsUserVO>  list=fsUserMapper.selectFsUserVOListByProjectNew(fsUser);
+        if(list!=null && !list.isEmpty()){
+            // 查询看课数和最后看课时间
+            Set<Long> userIds = list.stream().map(FsUserVO::getUserId).collect(Collectors.toSet());
+            List<FsUserCourseCount> fsUserCourseCounts = fsUserCourseCountMapper.selectUserLastCountList(userIds);
+            Map<Long, FsUserCourseCount> courseCountMap = fsUserCourseCounts.stream()
+                    .collect(Collectors.toMap(FsUserCourseCount::getUserId, Function.identity()));
+
+            list.forEach(item -> {
+                FsUserCourseCount courseCount = courseCountMap.get(item.getUserId());
+                if (courseCount != null) {
+                    item.setLastWatchDate(courseCount.getLastWatchDate());
+                    item.setWatchCourseCount(courseCount.getWatchCourseCount());
+                }
+            });
+        }
+        return list;
+    }
+
     @Override
     public FsUserAndCompanyAndDoctorVo selectCompanyAndDoctor(Long userId) {
         return fsUserMapper.selectCompanyAndDoctor(userId);
@@ -1472,4 +1501,6 @@ public class FsUserServiceImpl implements IFsUserService {
         return R.ok();
     }
 
+
+
 }

+ 1 - 0
fs-service/src/main/java/com/fs/store/mapper/FsUserCourseCountMapper.java

@@ -88,4 +88,5 @@ public interface FsUserCourseCountMapper
      */
     List<FsUserLastCount> selectUserLastCount(@Param("userIds") Set<Long> userIds);
 
+    List<FsUserCourseCount> selectUserLastCountList(@Param("userIds") Set<Long> userIds);
 }

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

@@ -60,8 +60,8 @@ watch:
   password3: v9xsKuqn_$d2y
 
 fs :
-  commonApi: http://159.75.111.224:8010
-  h5CommonApi: http://159.75.111.224:8010
+  commonApi: http://172.16.16.4:8010
+  h5CommonApi: http://172.16.16.4:8010
 nuonuo:
   key: 10924508
   secret: A2EB20764D304D16
@@ -80,8 +80,8 @@ cloud_host:
 headerImg:
   imgUrl: https://yxj-1323137866.cos.ap-chongqing.myqcloud.com/app/yxj.jpg
 ipad:
-  ipadUrl: http://ipad.ysya.top
-  aiApi: http://49.232.181.28:3000/api
+  ipadUrl: http://.top
+  aiApi: http://49/api
   voiceApi:
   commonApi:
 wx_miniapp_temp:

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

@@ -39,7 +39,7 @@ spring:
             druid:
                 # 主库数据源
                 master:
-                  url: jdbc:mysql://nj-cdb-22nvjajz.sql.tencentcdb.com:29237/fs_his?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                  url: jdbc:mysql://nj-cdb-22nvjajz.sql.tencentcdb.com:29237/fs_his?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
                   username: root
                   password: Ylrz_1q2w3e4r5t6y
                 # 从库数据源

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

@@ -39,7 +39,7 @@ spring:
             druid:
                 # 主库数据源
                 master:
-                  url: jdbc:mysql://10.206.0.17:65535/fs_his?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                  url: jdbc:mysql://10.206.0.17:65535/fs_his?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
                   username: root
                   password: Ylrz_1q2w3e4r5t6y
                 # 从库数据源
@@ -94,7 +94,7 @@ spring:
             druid:
                 # 主库数据源
                 master:
-                    url: jdbc:mysql://10.206.0.17:65535/fs_his_sop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    url: jdbc:mysql://10.206.0.17:65535/fs_his_sop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
                     username: root
                     password: Ylrz_1q2w3e4r5t6y
                 # 初始连接数
@@ -159,7 +159,7 @@ qw:
     enableAutoTag: 1
 tag:
     thread:
-        num: 5
+        num: 10
     rate:
-        limit: 30
+        limit: 50
 

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

@@ -1,7 +1,7 @@
 # 数据源配置
 spring:
     profiles:
-        include: config-druid-syysy,common
+        include: config-druid-yxj,common
     # redis 配置
     redis:
         host: 172.17.0.4
@@ -163,10 +163,11 @@ token:
 openIM:
     secret: openIM123
     userID: imAdmin
-    url: https://web.im.ysya.top/api
+    url: https://web.im.ya.top/api
 #是否使用新im
 im:
     type: OPENIM
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: true
+enableRedPackAccount: 0
 

+ 53 - 0
fs-service/src/main/resources/mapper/his/FsUserMapper.xml

@@ -1951,6 +1951,58 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
     </select>
 
+    <select id="selectFsUserVOListByProjectNew" resultType="com.fs.his.vo.FsUserVO">
+        SELECT
+            u.user_id, u.nick_name, u.avatar, u.phone, u.integral, u.now_money,
+            ucu.project_id,ucu.company_user_id as companyUserId,ucu.create_time as bindTime,ucu.status,
+            company.company_name,
+            cu.nick_name   companyUserNickName
+        FROM
+            fs_user_company_user ucu
+        left join
+            fs_user u  on ucu.user_id = u.user_id
+        left join
+            company on company.company_id = ucu.company_id
+        left join
+            company_user cu on cu.user_id = ucu.company_user_id
+        <where>
+            1 = 1 and u.nick_name is not null
+            and u.is_del = 0
+            <if test = "maps.nickname != null and  maps.nickname !='' " >
+                AND u.nick_name LIKE CONCAT("%",#{maps.nickname},"%")
+            </if >
+            <if test = "maps.userId != null and  maps.userId !='' " >
+                AND u.user_id = #{maps.userId}
+            </if >
+            <if test = "maps.phone != null   and  maps.phone !='' " >
+                AND u.phone LIKE CONCAT("%",#{maps.phone},"%")
+            </if >
+            <if test = "maps.startCreateTime != null and maps.endCreateTime != null" >
+                AND (DATE_FORMAT( ucu.create_time, "%Y-%m-%d" ) &gt;= DATE_FORMAT(#{maps.startCreateTime}, "%Y-%m-%d")
+                and DATE_FORMAT( ucu.create_time, "%Y-%m-%d" ) &lt;= DATE_FORMAT(#{maps.endCreateTime}, "%Y-%m-%d")
+                )
+            </if >
+            <if test = "maps.registerCode != null  and  maps.registerCode !=''  " >
+                AND u.register_code = #{maps.registerCode}
+            </if >
+            <if test = "maps.status != null" >
+                AND ucu.status = #{maps.status}
+            </if >
+            <if test = "maps.companyId != null and maps.companyId != '' " >
+                AND ucu.company_id = #{maps.companyId}
+            </if >
+            <if test = "maps.companyUserId != null" >
+                AND ucu.company_user_id = #{maps.companyUserId}
+            </if >
+            <if test = "maps.projectId != null" >
+                AND ucu.project_id = #{maps.projectId}
+            </if >
+        </where>
+        ORDER BY
+        user_id DESC
+
+    </select>
+
     <select id="selectFsUserVOListByProject" resultType="com.fs.his.vo.FsUserVO">
         SELECT distinct
         b.total_amount,b.last_buy_time,p.pay_money as number,p.payment_id,p.pay_time,
@@ -2319,4 +2371,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
     </select>
 
+
 </mapper>

+ 15 - 0
fs-service/src/main/resources/mapper/store/FsUserCourseCountMapper.xml

@@ -274,6 +274,21 @@
             #{userId}
         </foreach>
     </select>
+    <!-- 查询看客数量和最后看课时间   -->
+    <select id="selectUserLastCountList" resultType="com.fs.store.domain.FsUserCourseCount">
+        select
+        fs_user_course_count.user_id,
+        ifnull ( sum( fs_user_course_count.watch_course_count ), 0 ) AS watch_course_count,
+        Max( fs_user_course_count.last_watch_date ) AS last_watch_date
+        from fs_user_course_count
+        where
+        user_id in
+        <foreach item="userId" collection="userIds" open="(" separator="," close=")">
+            #{userId}
+        </foreach>
+        group by user_id
+    </select>
+
 
 
 </mapper>