Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

zyp 1 týždeň pred
rodič
commit
934a2aa02b
19 zmenil súbory, kde vykonal 215 pridanie a 27 odobranie
  1. 5 5
      fs-company/src/main/java/com/fs/course/controller/FsCourseAnswerLogsController.java
  2. 11 0
      fs-company/src/main/java/com/fs/user/FsUserAdminController.java
  3. 9 1
      fs-service-system/src/main/java/com/fs/course/param/FsCourseAnswerLogsParam.java
  4. 15 1
      fs-service-system/src/main/java/com/fs/course/service/impl/FsCourseAnswerLogsServiceImpl.java
  5. 4 1
      fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseServiceImpl.java
  6. 3 2
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseAnswerLogsListVO.java
  7. 3 3
      fs-service-system/src/main/java/com/fs/store/mapper/FsStoreOrderMapper.java
  8. 9 0
      fs-service-system/src/main/java/com/fs/store/mapper/FsUserCourseCountMapper.java
  9. 1 0
      fs-service-system/src/main/java/com/fs/store/mapper/FsUserMapper.java
  10. 2 0
      fs-service-system/src/main/java/com/fs/store/param/h5/FsUserPageListParam.java
  11. 7 0
      fs-service-system/src/main/java/com/fs/store/service/IFsUserService.java
  12. 28 6
      fs-service-system/src/main/java/com/fs/store/service/impl/FsUserServiceImpl.java
  13. 36 0
      fs-service-system/src/main/java/com/fs/store/vo/FsUserLastCount.java
  14. 3 0
      fs-service-system/src/main/resources/application-druid-zkzh.yml
  15. 11 1
      fs-service-system/src/main/resources/mapper/company/CompanyUserMapper.xml
  16. 9 0
      fs-service-system/src/main/resources/mapper/course/FsCourseAnswerLogsMapper.xml
  17. 3 3
      fs-service-system/src/main/resources/mapper/course/FsCourseWatchLogMapper.xml
  18. 27 1
      fs-service-system/src/main/resources/mapper/store/FsUserCourseCountMapper.xml
  19. 29 3
      fs-service-system/src/main/resources/mapper/store/FsUserMapper.xml

+ 5 - 5
fs-company/src/main/java/com/fs/course/controller/FsCourseAnswerLogsController.java

@@ -105,26 +105,26 @@ public class FsCourseAnswerLogsController extends BaseController
         }
         List<FsCourseAnswerLogsListVO> list = fsCourseAnswerLogsService.selectFsCourseAnswerLogsListVONew(param);
         ExcelUtil<FsCourseAnswerLogsListVO> util = new ExcelUtil<FsCourseAnswerLogsListVO>(FsCourseAnswerLogsListVO.class);
-        return util.exportExcel(list, "答题日志数据");
+        return util.exportExcel(list, "答题记录数据");
     }
 
     /**
-     * 导出答题日志列表
+     * 导出我的答题日志列表
      */
     @PreAuthorize("@ss.hasPermi('course:courseAnswerLog:myExport')")
-    @Log(title = "答题日志", businessType = BusinessType.EXPORT)
+    @Log(title = "我的答题日志", businessType = BusinessType.EXPORT)
     @GetMapping("/myExport")
     public AjaxResult myExport(FsCourseAnswerLogsParam param)
     {
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setCompanyId( loginUser.getCompany().getCompanyId());
-
+        param.setCompanyUserId(loginUser.getUser().getUserId());
         if (param.getPhoneMk() != null && param.getPhoneMk() != "") {
             param.setPhone(param.getPhoneMk());
         }
         List<FsCourseAnswerLogsListVO> list = fsCourseAnswerLogsService.selectFsCourseAnswerLogsListVONew(param);
         ExcelUtil<FsCourseAnswerLogsListVO> util = new ExcelUtil<FsCourseAnswerLogsListVO>(FsCourseAnswerLogsListVO.class);
-        return util.exportExcel(list, "答题日志数据");
+        return util.exportExcel(list, "我的答题记录数据");
     }
 
 //    /**

+ 11 - 0
fs-company/src/main/java/com/fs/user/FsUserAdminController.java

@@ -45,9 +45,20 @@ public class FsUserAdminController extends BaseController {
     public TableDataInfo pageList(@RequestBody FsUserPageListParam param) {
 //        startPage();
 
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        param.setCompanyId(loginUser.getCompany().getCompanyId());
+        return fsUserService.selectFsUserPageListNew(param);
+    }
+
+    @PreAuthorize("@ss.hasPermi('user:fsUser:myList')")
+    @PostMapping("/myList")
+    @ApiOperation("我的会员列表(与移动端使用的相同查询)")
+    public TableDataInfo pageMyList(@RequestBody FsUserPageListParam param) {
+
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setCompanyId(loginUser.getCompany().getCompanyId());
         param.setCompanyUserId(String.valueOf(loginUser.getUser().getUserId()));
+        param.setIsAdmin(loginUser.getUser().isAdmin());
 
         if(param.getCompanyUserId() == null) {
             throw new IllegalArgumentException("当前销售不存在!");

+ 9 - 1
fs-service-system/src/main/java/com/fs/course/param/FsCourseAnswerLogsParam.java

@@ -5,7 +5,7 @@ import com.fs.common.core.domain.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import java.util.Date;
+import java.util.Set;
 
 @EqualsAndHashCode(callSuper = true)
 @Data
@@ -60,4 +60,12 @@ public class FsCourseAnswerLogsParam  extends BaseEntity  {
 
     private Long pageNum;
     private Long pageSize;
+    /**
+     * 用户(昵称_id组合)
+     */
+    private String userName;
+    /**
+     * 用户id
+     */
+    private Set<Long> userIds;
 }

+ 15 - 1
fs-service-system/src/main/java/com/fs/course/service/impl/FsCourseAnswerLogsServiceImpl.java

@@ -23,11 +23,12 @@ import com.fs.store.service.cache.IFsUserCacheService;
 import com.fs.store.service.cache.IFsUserCourseCacheService;
 import com.hc.openapi.tool.util.StringUtils;
 import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * 答题日志Service业务层处理
@@ -50,6 +51,9 @@ public class FsCourseAnswerLogsServiceImpl implements IFsCourseAnswerLogsService
     private final ICompanyCacheService companyCacheService;
 
     private final ICompanyUserCacheService companyUserCacheService;
+
+    private final IFsUserService fsUserService;
+
     /**
      * 查询答题日志
      *
@@ -86,6 +90,16 @@ public class FsCourseAnswerLogsServiceImpl implements IFsCourseAnswerLogsService
 
     @Override
     public List<FsCourseAnswerLogsListVO> selectFsCourseAnswerLogsListVONew(FsCourseAnswerLogsParam param) {
+
+        if(StringUtils.isNotEmpty(param.getUserName())){
+            List<FsUser> fsUsers = fsUserService.selectFsUserListByJointUserNameKey(param.getUserName());
+            if(fsUsers.isEmpty()) {
+                return Collections.emptyList();
+            }
+            Set<Long> userIds = fsUsers.stream().map(FsUser::getUserId).collect(Collectors.toSet());
+            param.setUserIds(userIds);
+        }
+
         List<FsCourseAnswerLogsListVO> data = fsCourseAnswerLogsMapper.selectFsCourseAnswerLogsListVONew(param);
         for (FsCourseAnswerLogsListVO datum : data) {
             FsUserCourseVideo fsUserCourseVideo = fsUserCourseVideoCacheService.selectFsUserCourseVideoByVideoId(datum.getVideoId());

+ 4 - 1
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseServiceImpl.java

@@ -12,6 +12,7 @@ import com.fs.company.domain.CompanyTag;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.mapper.CompanyTagMapper;
 import com.fs.company.mapper.CompanyUserMapper;
+import com.fs.config.cloud.CloudHostProper;
 import com.fs.course.config.CourseConfig;
 import com.fs.course.domain.*;
 import com.fs.course.mapper.*;
@@ -78,6 +79,8 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
     private FsCourseWatchLogMapper fsCourseWatchLogMapper;
     @Autowired
     private FsCourseAnswerLogsMapper fsCourseAnswerLogsMapper;
+    @Autowired
+    CloudHostProper cloudHostProper;
 
     private static final String realLink = "/courseH5/pages/course/learning?course=";
     private static final String shortLink = "/courseH5/pages/course/learning?s=";
@@ -492,7 +495,7 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
         graphics.fillRect(0, scaledHeight, scaledWidth, bottomHeight);
 
         // 绘制推荐区域(图片和文字)
-        drawRecommendationArea(graphics, file, scaledHeight, "云联融智", "为您推荐");
+        drawRecommendationArea(graphics, file, scaledHeight, cloudHostProper.getCompanyName(), "为您推荐");
 
         // 绘制二维码
         drawQRCode(graphics, url, scaledWidth, totalHeight);

+ 3 - 2
fs-service-system/src/main/java/com/fs/course/vo/FsCourseAnswerLogsListVO.java

@@ -18,7 +18,7 @@ public class FsCourseAnswerLogsListVO {
     /**
     * 小程序用户名
     */
-    @Excel(name = "用户")
+    @Excel(name = "用户", sort = 1)
     private String userName;
     private String fsAvatar;
     /**
@@ -37,7 +37,7 @@ public class FsCourseAnswerLogsListVO {
     /**
     * 视频名称
     */
-    @Excel(name = "视频名称",width = 70)
+    @Excel(name = "小节名称",width = 70)
     private String videoName;
     /**
     * 是否全部正确 0否 1是
@@ -86,6 +86,7 @@ public class FsCourseAnswerLogsListVO {
     /**
      * 项目名称
      */
+    @Excel(name = "项目", sort = 2)
     private String projectName;
 
     private Date sTime;

+ 3 - 3
fs-service-system/src/main/java/com/fs/store/mapper/FsStoreOrderMapper.java

@@ -161,9 +161,9 @@ public interface FsStoreOrderMapper
             " AND date_format(o.delivery_send_time,'%y%m%d') &gt;= date_format(#{maps.deliverySendTimeList[0]},'%y%m%d') " +
             " AND date_format(o.delivery_send_time,'%y%m%d') &lt;= date_format(#{maps.deliverySendTimeList[1]},'%y%m%d') " +
             "</if>" +
-            "<if test = 'maps.paid != null    '> " +
-            "and o.paid =#{maps.paid} " +
-            "</if>" +
+//            "<if test = 'maps.paid != null    '> " +
+//            "and o.paid =#{maps.paid} " +
+//            "</if>" +
             "<if test = 'maps.payTimeList != null    '> " +
             " AND date_format(o.pay_time,'%y%m%d') &gt;= date_format(#{maps.payTimeList[0]},'%y%m%d') " +
             " AND date_format(o.pay_time,'%y%m%d') &lt;= date_format(#{maps.payTimeList[1]},'%y%m%d') " +

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

@@ -1,7 +1,10 @@
 package com.fs.store.mapper;
 
 import java.util.List;
+import java.util.Set;
+
 import com.fs.store.domain.FsUserCourseCount;
+import com.fs.store.vo.FsUserLastCount;
 import org.apache.ibatis.annotations.Param;
 
 /**
@@ -79,4 +82,10 @@ public interface FsUserCourseCountMapper
      */
     void insertFsUserCourseCountTask(FsUserCourseCount fsUserCourseCount);
 
+    /**
+     * 查询会员最新的看课状态和心跳时间
+     * @return
+     */
+    List<FsUserLastCount> selectUserLastCount(@Param("userIds") Set<Long> userIds);
+
 }

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

@@ -317,4 +317,5 @@ public interface FsUserMapper
 
     List<FsUserWatchCourseStatistics> selectFsUserDetail();
 
+    List<FsUser> selectFsUserListByJointUserNameKey(String userNameKey);
 }

+ 2 - 0
fs-service-system/src/main/java/com/fs/store/param/h5/FsUserPageListParam.java

@@ -72,6 +72,8 @@ public class FsUserPageListParam implements Serializable {
      */
     private Long pcLoginUserId;
 
+    private Boolean isAdmin;
+
 
 
 

+ 7 - 0
fs-service-system/src/main/java/com/fs/store/service/IFsUserService.java

@@ -253,4 +253,11 @@ public interface IFsUserService
      */
     void setRepeatFansTag(FsUserCourseBeMemberParam param);
 
+    /**
+     * 根据组合key(用户昵称+id)查询用户信息
+     * @param userNameKey (用户昵称+id)
+     * @return
+     */
+    List<FsUser> selectFsUserListByJointUserNameKey(String userNameKey);
+
 }

+ 28 - 6
fs-service-system/src/main/java/com/fs/store/service/impl/FsUserServiceImpl.java

@@ -40,10 +40,7 @@ import com.fs.store.domain.*;
 import com.fs.store.dto.FsStoreCartDTO;
 import com.fs.store.dto.FsUserTransferParamDTO;
 import com.fs.store.enums.BillDetailEnum;
-import com.fs.store.mapper.FsStoreOrderMapper;
-import com.fs.store.mapper.FsStoreProductAttrValueMapper;
-import com.fs.store.mapper.FsUserCompanyUserMapper;
-import com.fs.store.mapper.FsUserMapper;
+import com.fs.store.mapper.*;
 import com.fs.store.param.SelectCusListPageParam;
 import com.fs.store.param.h5.CourseAnalysisParam;
 import com.fs.store.param.h5.FsUserPageListParam;
@@ -53,6 +50,7 @@ import com.fs.store.service.IFsUserService;
 import com.fs.store.service.cache.IFsUserCourseCountCacheService;
 import com.fs.store.vo.FSUserVO;
 import com.fs.store.vo.FsCompanyUserListQueryVO;
+import com.fs.store.vo.FsUserLastCount;
 import com.fs.store.vo.FsUserTuiVO;
 import com.fs.store.vo.h5.*;
 import com.github.pagehelper.PageHelper;
@@ -135,6 +133,9 @@ public class FsUserServiceImpl implements IFsUserService
     @Autowired
     private QwExternalContactMapper qwExternalContactMapper;
 
+    @Autowired
+    private FsUserCourseCountMapper fsUserCourseCountMapper;
+
     /**
      * 查询用户
      *
@@ -524,11 +525,22 @@ public class FsUserServiceImpl implements IFsUserService
         if(companyUserId != null) {
             Long companyUser = Long.parseLong(companyUserId);
             Set<Long> userIds = companyUserCacheService.selectUserAllCompanyUserId(companyUser);
+            if (userIds != null || userIds.size() <= 1) {
+                if (param.getIsAdmin()) {
+                    List<CompanyUser> companyUsers = companyUserMapper.selectCompanyUserByCompanyId(param.getCompanyId());
+                    userIds = companyUsers.stream().map(CompanyUser::getUserId).collect(Collectors.toSet());
+                }
+            }
             param.setCompanyUserIds(userIds);
         }
 
         List<FsUserPageListVO> fsUserPageListVOS = fsUserMapper.selectFsUserPageListNew(param);
         Map<Long, CompanyTag> tagMap = companyTagCacheService.queryAllTagMap();
+        //获取会员的最新的看课状态和最后看课时间
+        Set<Long> userIds = fsUserPageListVOS.stream().map(FsUserPageListVO::getUserId).collect(Collectors.toSet());
+        List<FsUserLastCount> fsUserCourseCounts = fsUserCourseCountMapper.selectUserLastCount(userIds);
+        Map<Long, FsUserLastCount> countMap = fsUserCourseCounts.stream().collect(Collectors.toMap(FsUserLastCount::getUserId, Function.identity()));
+
         for (FsUserPageListVO item : fsUserPageListVOS) {
             if(item.getCompanyUserId() != null) {
                 String companyUserName = companyUserCacheService.selectCompanyUserNameUserById(item.getCompanyUserId());
@@ -552,11 +564,16 @@ public class FsUserServiceImpl implements IFsUserService
                     item.setMissCourseCount(byUserId.getMissCourseCount());
                     item.setMissCourseStatus(byUserId.getMissCourseStatus());
                     if(StringUtils.isNotEmpty(byUserId.getPartCourseCount())){
-                        item.setPartCourseCount(Long.valueOf(byUserId.getPartCourseCount()));
+                        item.setPartCourseCount(new BigDecimal(byUserId.getPartCourseCount()).longValue());
                     }
-                    item.setCourseCountStatus(byUserId.getStatus());
+//                    item.setCourseCountStatus(byUserId.getStatus());
                     item.setStopWatchDays(byUserId.getStopWatchDays());
                     item.setCompleteWatchDate(byUserId.getCompleteWatchDate());
+                    item.setLastWatchDate(byUserId.getLastWatchDate());
+                }
+                FsUserLastCount fsUserCourseCount = countMap.get(item.getUserId());
+                if(fsUserCourseCount != null){
+                    item.setCourseCountStatus(fsUserCourseCount.getStatus());
                 }
                 String userTagByUserId = companyTagCacheService
                         .findUserTagByUserId(item.getUserId(),item.getCompanyUserId());
@@ -999,6 +1016,11 @@ public class FsUserServiceImpl implements IFsUserService
         }
     }
 
+    @Override
+    public List<FsUser> selectFsUserListByJointUserNameKey(String userNameKey) {
+        return fsUserMapper.selectFsUserListByJointUserNameKey(userNameKey);
+    }
+
     // 添加关系表数据
     private static FsUserCompanyUser getFsUserCompanyUser(FsUserCourseBeMemberParam param, FsUser fsUser) {
         FsUserCompanyUser fsUserCompanyUser = new FsUserCompanyUser();

+ 36 - 0
fs-service-system/src/main/java/com/fs/store/vo/FsUserLastCount.java

@@ -0,0 +1,36 @@
+package com.fs.store.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 用户看课统计对象 fs_user_course_count
+ *
+ * @author fs
+ * @date 2025-04-02
+ */
+@Data
+public class FsUserLastCount {
+    /**
+     * 用户id
+     */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /**
+     * 最后一次看课时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "最后一次看课时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date lastWatchDate;
+
+    /**
+     * 用户状态,1-正常;2-停止;3-未看
+     */
+    @Excel(name = "用户状态,1-正常;2-停止;3-未看")
+    private Long status;
+
+}

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

@@ -137,3 +137,6 @@ rocketmq:
         group: test-group
         access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
         secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
+cloud_host:
+    company_name: 中康智慧
+

+ 11 - 1
fs-service-system/src/main/resources/mapper/company/CompanyUserMapper.xml

@@ -473,7 +473,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
     </select>
     <select id="selectUserAllCompanyUserId" resultType="java.lang.Long">
-        select distinct user_id from company_user where parent_id=${companyUserId}
+--         select distinct user_id from company_user where parent_id=${companyUserId}
+            WITH RECURSIVE RecursiveUsers AS (
+                SELECT user_id, parent_id
+                FROM company_user
+                WHERE parent_id = ${companyUserId}
+                UNION ALL
+                SELECT cu.user_id, cu.parent_id
+                FROM company_user cu
+                         JOIN RecursiveUsers ru ON cu.parent_id = ru.user_id
+            )
+            SELECT DISTINCT user_id FROM RecursiveUsers;
     </select>
     <select id="selectCompanyUserNameUserById" resultType="java.lang.String">
         select concat(nick_name,'_',user_name) from company_user where user_id=${userId} limit 1

+ 9 - 0
fs-service-system/src/main/resources/mapper/course/FsCourseAnswerLogsMapper.xml

@@ -55,6 +55,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="courseId != null">
                 cal_inner.course_id = #{courseId}
             </if>
+            <if test="videoId != null and videoId != '' ">
+                AND cal_inner.video_id = #{videoId}
+            </if>
             <if test="companyUserId != null">
                 AND cal_inner.company_user_id = #{companyUserId}
             </if>
@@ -70,6 +73,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="sTime != null and eTime != null">
                 AND cal_inner.create_time BETWEEN #{sTime} AND #{eTime}
             </if>
+            <if test="userIds != null and userIds.size() > 0">
+                and cal_inner.user_id in
+            <foreach collection="userIds"  open="(" close=")" separator="," item="userId" index="index">
+                #{userId}
+            </foreach>
+            </if>
         </where>
         ORDER BY cal_inner.log_id DESC
         LIMIT ${(pageNum-1)*pageSize}, ${pageSize}

+ 3 - 3
fs-service-system/src/main/resources/mapper/course/FsCourseWatchLogMapper.xml

@@ -541,10 +541,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                and o.company_id=#{companyId}
             </if>
             <if test= 'sTime != null '>
-                and o.create_time &gt;= #{startDate}
+                and o.create_time &gt;= #{sTime}
             </if>
             <if test='eTime != null '>
-                and o.create_time &lt;= #{endDate}
+                and o.create_time &lt;= #{eTime}
             </if>
             <if test ='courseId !=null'>
                 and o.course_id = #{courseId}
@@ -566,7 +566,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         GROUP BY o.video_id,o.user_id,DATE(o.create_time),o.project,o.course_id
         ORDER BY o.video_id ,DATE(o.create_time)
 
-        limit ${(maps.pageNum-1)*maps.pageSize},${maps.pageSize}
+        limit ${(pageNum-1)*pageSize},${pageSize}
     </select>
     <select id="selectFsCourseWatchLogListVONew" resultType="com.fs.course.vo.FsCourseWatchLogListVO">
         SELECT

+ 27 - 1
fs-service-system/src/main/resources/mapper/store/FsUserCourseCountMapper.xml

@@ -55,7 +55,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where id = #{id}
     </select>
     <select id="findByUserId" resultType="com.fs.store.domain.FsUserCourseCount">
-        select * from fs_user_course_count where user_id = ${userId} limit 1
+        select
+            fs_user_course_count.user_id,
+            ifnull ( sum( fs_user_course_count.watch_course_count ), 0 ) AS watch_course_count,
+            ifnull ( sum( fs_user_course_count.miss_course_count ), 0 ) AS miss_course_count,
+            ifnull ( sum( fs_user_course_count.part_course_count ), 0 ) AS part_course_count,
+            Max( fs_user_course_count.last_watch_date ) AS last_watch_date,
+            ifnull ( sum( fs_user_course_count.stop_watch_days ), 0 ) AS stop_watch_days,
+            Max( fs_user_course_count.complete_watch_date) AS complete_watch_date
+            from fs_user_course_count where user_id = ${userId}
     </select>
 
     <insert id="insertFsUserCourseCount" parameterType="FsUserCourseCount">
@@ -245,5 +253,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </trim>
     </insert>
 
+    <select id="selectUserLastCount" resultType="FsUserLastCount">
+        SELECT
+            fs_user_course_count.user_id,
+            fs_user_course_count.`status`,
+            fs_user_course_count.last_watch_date
+        FROM
+            fs_user_course_count
+                INNER JOIN ( SELECT MAX( id ) AS id FROM fs_user_course_count
+                where fs_user_course_count.user_id in
+                <foreach item="userId" collection="userIds" open="(" separator="," close=")">
+                    #{userId}
+                </foreach>
+                GROUP BY user_id ) t2 ON fs_user_course_count.id = t2.id
+                where fs_user_course_count.user_id in
+                <foreach item="userId" collection="userIds" open="(" separator="," close=")">
+                    #{userId}
+                </foreach>
+    </select>
 
 </mapper>

+ 29 - 3
fs-service-system/src/main/resources/mapper/store/FsUserMapper.xml

@@ -480,6 +480,12 @@
         fs_user
         <where>
             fs_user.is_del = 0
+            <if test="companyId != null">
+                AND fs_user.company_id = #{companyId}
+            </if>
+            <if test="companyUserId != null and companyUserId != '' ">
+                AND fs_user.company_user_id = #{companyUserId}
+            </if>
             <if test="registerStartTime != null and registerStartTime !='' ">
                 AND fs_user.create_time &gt;= #{registerStartTime}
             </if>
@@ -493,10 +499,10 @@
                 </foreach>
             </if>
             <if test="nickname != null and nickname != ''">
-                AND fs_user.nickname like concat(#{nickname},'%')
+                AND fs_user.nickname like concat('%', #{nickname},'%')
             </if>
             <if test="phone != null and phone != ''">
-                AND fs_user.phone = #{phone}
+                AND fs_user.phone like concat('%', #{phone},'%')
             </if>
         </where>
         limit ${(pageNum-1)*pageSize},${pageSize}
@@ -1491,6 +1497,12 @@
         fs_user
         <where>
             fs_user.is_del = 0
+            <if test="companyId != null">
+                AND fs_user.company_id = #{companyId}
+            </if>
+            <if test="companyUserId != null and companyUserId != '' ">
+                AND fs_user.company_user_id = #{companyUserId}
+            </if>
             <if test="registerStartTime != null and registerStartTime !='' ">
                 AND fs_user.create_time &gt;= #{registerStartTime}
             </if>
@@ -1507,7 +1519,7 @@
                 AND fs_user.nickname like concat(#{nickname},'%')
             </if>
             <if test="phone != null and phone!=''">
-                AND fs_user.phone = #{phone}
+                AND fs_user.phone like concat('%', #{phone},'%')
             </if>
         </where>
     </select>
@@ -1699,4 +1711,18 @@
         fs_user.company_user_id, date(fs_user.create_time)
     </select>
 
+
+    <select id="selectFsUserListByJointUserNameKey" parameterType="FsUser" resultMap="FsUserResult">
+        <include refid="selectFsUserVo"/>
+        <where>
+            <if test="userName != null  and userName != ''">
+                AND (
+                nickname like concat('%', #{userName}, '%')
+                or  user_id LIKE concat('%',#{userName},'%')
+                )
+            </if>
+        </where>
+        order by user_id desc
+    </select>
+
 </mapper>