Prechádzať zdrojové kódy

feat:用户会员标签列表、启用/禁用、会员详情、销售信息等接口

caoliqin 2 mesiacov pred
rodič
commit
2c64fe2a78
21 zmenil súbory, kde vykonal 624 pridanie a 25 odobranie
  1. 49 6
      fs-company-app/src/main/java/com/fs/app/controller/FsUserController.java
  2. 66 0
      fs-service-system/src/main/java/com/fs/company/mapper/CompanyTagUserMapper.java
  3. 2 0
      fs-service-system/src/main/java/com/fs/company/mapper/CompanyUserMapper.java
  4. 71 0
      fs-service-system/src/main/java/com/fs/company/service/ICompanyTagUserService.java
  5. 2 0
      fs-service-system/src/main/java/com/fs/company/service/ICompanyUserService.java
  6. 124 0
      fs-service-system/src/main/java/com/fs/company/service/impl/CompanyTagUserServiceImpl.java
  7. 5 0
      fs-service-system/src/main/java/com/fs/company/service/impl/CompanyUserServiceImpl.java
  8. 8 0
      fs-service-system/src/main/java/com/fs/course/service/IFsUserCourseVideoService.java
  9. 14 0
      fs-service-system/src/main/java/com/fs/store/domain/FsUserCourseCount.java
  10. 1 0
      fs-service-system/src/main/java/com/fs/store/mapper/FsUserMapper.java
  11. 7 1
      fs-service-system/src/main/java/com/fs/store/param/h5/FsUserPageListParam.java
  12. 28 0
      fs-service-system/src/main/java/com/fs/store/param/h5/TagListParam.java
  13. 3 0
      fs-service-system/src/main/java/com/fs/store/service/IFsUserService.java
  14. 25 2
      fs-service-system/src/main/java/com/fs/store/service/impl/FsUserServiceImpl.java
  15. 19 0
      fs-service-system/src/main/java/com/fs/store/vo/h5/CompanyUserTagListVO.java
  16. 2 0
      fs-service-system/src/main/java/com/fs/store/vo/h5/FsUserPageListVO.java
  17. 8 0
      fs-service-system/src/main/java/com/fs/store/vo/h5/UserDetailsVO.java
  18. 98 0
      fs-service-system/src/main/resources/mapper/company/CompanyTagUserMapper.xml
  19. 9 1
      fs-service-system/src/main/resources/mapper/company/CompanyUserMapper.xml
  20. 21 1
      fs-service-system/src/main/resources/mapper/store/FsUserCourseCountMapper.xml
  21. 62 14
      fs-service-system/src/main/resources/mapper/store/FsUserMapper.xml

+ 49 - 6
fs-company-app/src/main/java/com/fs/app/controller/FsUserController.java

@@ -3,11 +3,15 @@ package com.fs.app.controller;
 
 import com.fs.app.annotation.Login;
 import com.fs.common.core.domain.ResponseResult;
-import com.fs.qw.service.IQwExternalContactService;
-import com.fs.qw.vo.newvo.ExternalContactDetailsVO;
+import com.fs.company.domain.CompanyUser;
+import com.fs.company.service.ICompanyTagUserService;
+import com.fs.company.service.ICompanyUserService;
 import com.fs.store.param.h5.FsUserPageListParam;
+import com.fs.store.param.h5.TagListParam;
 import com.fs.store.service.IFsUserService;
+import com.fs.store.vo.h5.CompanyUserTagListVO;
 import com.fs.store.vo.h5.FsUserPageListVO;
+import com.fs.store.vo.h5.UserDetailsVO;
 import com.fs.store.vo.h5.UserListPageVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
@@ -28,6 +32,12 @@ public class FsUserController extends AppBaseController {
 
     @Autowired
     private IFsUserService fsUserService;
+
+    @Autowired
+    private ICompanyUserService companyUserService;
+
+    @Autowired
+    private ICompanyTagUserService companyTagUserService;
 //
 //    @Autowired
 //    private IQwTagService tagService;
@@ -43,6 +53,13 @@ public class FsUserController extends AppBaseController {
         return ResponseResult.ok(pageInfo);
     }
 
+    @GetMapping("/allCompanyUser")
+    @ApiOperation("获取所有公司销售")
+    public ResponseResult<List<CompanyUser>> getAllCompanyUser(){
+        List<CompanyUser> companyUsers = companyUserService.selectAllCompanyUserByParentId(Long.parseLong(getUserId()));
+        return ResponseResult.ok(companyUsers);
+    }
+
     @Login
     @GetMapping("/totalNumber")
     @ApiOperation("用户会员数量统计")
@@ -54,12 +71,38 @@ public class FsUserController extends AppBaseController {
     @Login
     @GetMapping("/details")
     @ApiOperation("用户会员详情")
-    public ResponseResult<ExternalContactDetailsVO> getUserDetails(@ApiParam(value = "用户id", required = true) @RequestParam Long userId,
-                                                                   @ApiParam(value = "时间tab,不传表示查询全部,分别是:今天、昨天、前天、近七天", required = true) @RequestParam String dateTag) {
-//        qwExternalContactService.getUserDetails(Long.parseLong(getUserId()), contactId, dateTag)
-        return ResponseResult.ok();
+    public ResponseResult<UserDetailsVO> getUserDetails(@ApiParam(value = "用户id", required = true) @RequestParam Long userId,
+                                                                   @ApiParam(value = "时间tab,不传表示查询全部,分别是:今天、昨天、前天、近七天", required = true) @RequestParam(required = false) String dateTag) {
+        UserDetailsVO userDetails = fsUserService.getUserDetails(Long.parseLong(getUserId()), userId, dateTag);
+        return ResponseResult.ok(userDetails);
     }
 
+    @Login
+    @GetMapping("/tagList")
+    @ApiOperation("用户会员标签列表")
+    public ResponseResult<PageInfo<CompanyUserTagListVO>> getTagList(TagListParam param) {
+        param.setUserId(Long.parseLong(getUserId()));
+        PageHelper.startPage(param.getPageNum(), param.getPageSize());
+        List<CompanyUserTagListVO> tagList = companyTagUserService.getTagList(param);
+        PageInfo<CompanyUserTagListVO> pageInfo = new PageInfo<>(tagList);
+        return ResponseResult.ok(pageInfo);
+    }
+
+    @Login
+    @PostMapping("/disabled")
+    @ApiOperation("批量禁用会员")
+    public ResponseResult<Boolean> disabledUser(@ApiParam(value = "联系人id集合", required = true) @RequestBody String[] ids) {
+        Boolean r = fsUserService.disabledUser(ids, false);
+        return ResponseResult.ok(r);
+    }
+
+    @Login
+    @PostMapping("/enabled")
+    @ApiOperation("批量启用会员")
+    public ResponseResult<Boolean> enabledUser(@ApiParam(value = "联系人id集合", required = true) @RequestBody String[] ids) {
+        Boolean r = fsUserService.disabledUser(ids, true);
+        return ResponseResult.ok(r);
+    }
 
 
 }

+ 66 - 0
fs-service-system/src/main/java/com/fs/company/mapper/CompanyTagUserMapper.java

@@ -0,0 +1,66 @@
+package com.fs.company.mapper;
+
+import java.util.List;
+import com.fs.company.domain.CompanyTagUser;
+import com.fs.store.param.h5.TagListParam;
+import com.fs.store.vo.h5.CompanyUserTagListVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * companyMapper接口
+ *
+ * @author fs
+ * @date 2025-04-02
+ */
+public interface CompanyTagUserMapper
+{
+    /**
+     * 查询company
+     *
+     * @param id companyID
+     * @return company
+     */
+    public CompanyTagUser selectCompanyTagUserById(Long id);
+
+    /**
+     * 查询company列表
+     *
+     * @param companyTagUser company
+     * @return company集合
+     */
+    public List<CompanyTagUser> selectCompanyTagUserList(CompanyTagUser companyTagUser);
+
+    /**
+     * 新增company
+     *
+     * @param companyTagUser company
+     * @return 结果
+     */
+    public int insertCompanyTagUser(CompanyTagUser companyTagUser);
+
+    /**
+     * 修改company
+     *
+     * @param companyTagUser company
+     * @return 结果
+     */
+    public int updateCompanyTagUser(CompanyTagUser companyTagUser);
+
+    /**
+     * 删除company
+     *
+     * @param id companyID
+     * @return 结果
+     */
+    public int deleteCompanyTagUserById(Long id);
+
+    /**
+     * 批量删除company
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteCompanyTagUserByIds(Long[] ids);
+
+    List<CompanyUserTagListVO> getTagList(@Param("param") TagListParam param, @Param("keywords") String[] keywords, @Param("userIds") List<Long> userIds);
+}

+ 2 - 0
fs-service-system/src/main/java/com/fs/company/mapper/CompanyUserMapper.java

@@ -247,4 +247,6 @@ public interface CompanyUserMapper
 
     @Select("select * from company_user where company_id=#{companyId} and del_flag=0")
     List<CompanyUser> selectCompanyUserByCompanyId(Long companyId);
+
+    List<CompanyUser> selectAllCompanyUserByParentId(Long parentId);
 }

+ 71 - 0
fs-service-system/src/main/java/com/fs/company/service/ICompanyTagUserService.java

@@ -0,0 +1,71 @@
+package com.fs.company.service;
+
+import java.util.List;
+import com.fs.company.domain.CompanyTagUser;
+import com.fs.store.param.h5.TagListParam;
+import com.fs.store.vo.h5.CompanyUserTagListVO;
+
+/**
+ * companyService接口
+ *
+ * @author fs
+ * @date 2025-04-02
+ */
+public interface ICompanyTagUserService
+{
+    /**
+     * 查询company
+     *
+     * @param id companyID
+     * @return company
+     */
+    public CompanyTagUser selectCompanyTagUserById(Long id);
+
+    /**
+     * 查询company列表
+     *
+     * @param companyTagUser company
+     * @return company集合
+     */
+    public List<CompanyTagUser> selectCompanyTagUserList(CompanyTagUser companyTagUser);
+
+    /**
+     * 新增company
+     *
+     * @param companyTagUser company
+     * @return 结果
+     */
+    public int insertCompanyTagUser(CompanyTagUser companyTagUser);
+
+    /**
+     * 修改company
+     *
+     * @param companyTagUser company
+     * @return 结果
+     */
+    public int updateCompanyTagUser(CompanyTagUser companyTagUser);
+
+    /**
+     * 批量删除company
+     *
+     * @param ids 需要删除的companyID
+     * @return 结果
+     */
+    public int deleteCompanyTagUserByIds(Long[] ids);
+
+    /**
+     * 删除company信息
+     *
+     * @param id companyID
+     * @return 结果
+     */
+    public int deleteCompanyTagUserById(Long id);
+
+    /**
+     * 标签分页列表
+     * @param param 分页参数
+     * @return
+     */
+    List<CompanyUserTagListVO> getTagList(TagListParam param);
+
+}

+ 2 - 0
fs-service-system/src/main/java/com/fs/company/service/ICompanyUserService.java

@@ -126,4 +126,6 @@ public interface ICompanyUserService {
     List<CompanyQwUserByIdsVo> selectCompanyQwUserByIds(List<Long> qwUserIdList);
 
     CompanyUser selectCompanyUserByUserId(Long userId);
+
+    List<CompanyUser> selectAllCompanyUserByParentId(Long parentId);
 }

+ 124 - 0
fs-service-system/src/main/java/com/fs/company/service/impl/CompanyTagUserServiceImpl.java

@@ -0,0 +1,124 @@
+package com.fs.company.service.impl;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import com.fs.common.utils.DateUtils;
+import com.fs.common.utils.StringUtils;
+import com.fs.company.domain.CompanyUser;
+import com.fs.company.mapper.CompanyUserMapper;
+import com.fs.store.param.h5.TagListParam;
+import com.fs.store.vo.h5.CompanyUserTagListVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.fs.company.mapper.CompanyTagUserMapper;
+import com.fs.company.domain.CompanyTagUser;
+import com.fs.company.service.ICompanyTagUserService;
+
+/**
+ * companyService业务层处理
+ *
+ * @author fs
+ * @date 2025-04-02
+ */
+@Service
+public class CompanyTagUserServiceImpl implements ICompanyTagUserService
+{
+    @Autowired
+    private CompanyTagUserMapper companyTagUserMapper;
+
+    @Autowired
+    private CompanyUserMapper  companyUserMapper;
+
+    /**
+     * 查询company
+     *
+     * @param id companyID
+     * @return company
+     */
+    @Override
+    public CompanyTagUser selectCompanyTagUserById(Long id)
+    {
+        return companyTagUserMapper.selectCompanyTagUserById(id);
+    }
+
+    /**
+     * 查询company列表
+     *
+     * @param companyTagUser company
+     * @return company
+     */
+    @Override
+    public List<CompanyTagUser> selectCompanyTagUserList(CompanyTagUser companyTagUser)
+    {
+        return companyTagUserMapper.selectCompanyTagUserList(companyTagUser);
+    }
+
+    /**
+     * 新增company
+     *
+     * @param companyTagUser company
+     * @return 结果
+     */
+    @Override
+    public int insertCompanyTagUser(CompanyTagUser companyTagUser)
+    {
+        companyTagUser.setCreateTime(DateUtils.getNowDate());
+        return companyTagUserMapper.insertCompanyTagUser(companyTagUser);
+    }
+
+    /**
+     * 修改company
+     *
+     * @param companyTagUser company
+     * @return 结果
+     */
+    @Override
+    public int updateCompanyTagUser(CompanyTagUser companyTagUser)
+    {
+        return companyTagUserMapper.updateCompanyTagUser(companyTagUser);
+    }
+
+    /**
+     * 批量删除company
+     *
+     * @param ids 需要删除的companyID
+     * @return 结果
+     */
+    @Override
+    public int deleteCompanyTagUserByIds(Long[] ids)
+    {
+        return companyTagUserMapper.deleteCompanyTagUserByIds(ids);
+    }
+
+    /**
+     * 删除company信息
+     *
+     * @param id companyID
+     * @return 结果
+     */
+    @Override
+    public int deleteCompanyTagUserById(Long id)
+    {
+        return companyTagUserMapper.deleteCompanyTagUserById(id);
+    }
+
+    @Override
+    public List<CompanyUserTagListVO> getTagList(TagListParam param) {
+        String[] keywords = new String[0];
+        if (param != null) {
+            if (StringUtils.isNotEmpty(param.getKeyword())) {
+                keywords = param.getKeyword().split(",");
+            }
+        }
+        //获取所有销售
+        List<CompanyUser> companyUsers = companyUserMapper.selectAllCompanyUserByParentId(param != null ? param.getUserId() : null);
+        List<Long> userIds = Collections.emptyList();
+        if(companyUsers != null && !companyUsers.isEmpty()){
+            userIds = companyUsers.stream().map(CompanyUser::getUserId).collect(Collectors.toList());
+        }
+
+        return companyTagUserMapper.getTagList(param, keywords, userIds);
+    }
+}

+ 5 - 0
fs-service-system/src/main/java/com/fs/company/service/impl/CompanyUserServiceImpl.java

@@ -386,4 +386,9 @@ public class CompanyUserServiceImpl implements ICompanyUserService
         return companyUserMapper.selectCompanyUserByUserId(userId);
     }
 
+    @Override
+    public  List<CompanyUser> selectAllCompanyUserByParentId(Long parentId) {
+        return companyUserMapper.selectAllCompanyUserByParentId(parentId);
+    }
+
 }

+ 8 - 0
fs-service-system/src/main/java/com/fs/course/service/IFsUserCourseVideoService.java

@@ -3,7 +3,9 @@ package com.fs.course.service;
 import com.fs.common.core.domain.R;
 import com.fs.course.domain.FsUserCourseVideo;
 import com.fs.course.param.*;
+import com.fs.course.param.newfs.UserCourseVideoPageParam;
 import com.fs.course.vo.FsUserCourseVideoListUVO;
+import com.fs.course.vo.newfs.FsUserCourseVideoPageListVO;
 import com.fs.course.vo.FsUserCourseVideoQVO;
 import com.fs.course.vo.FsUserCourseVideoVO;
 
@@ -88,4 +90,10 @@ public interface IFsUserCourseVideoService
 
     R sendReward(FsCourseSendRewardUParam param);
 
+    /**
+     * 获取课程视频分页列表
+     * @return FsUserCourseVideoPageListVO
+     */
+    List<FsUserCourseVideoPageListVO> pageListCourseVideo(UserCourseVideoPageParam param);
+
 }

+ 14 - 0
fs-service-system/src/main/java/com/fs/store/domain/FsUserCourseCount.java

@@ -36,6 +36,10 @@ public class FsUserCourseCount extends BaseEntity
     @Excel(name = "缺课状态,1-已缺课;2-未缺课")
     private Long missCourseStatus;
 
+    /** 缺课天数 */
+    @Excel(name = "缺课天数")
+    private Long missCourseDays;
+
     /** 关联课程(营期)id */
     @Excel(name = "关联课程", readConverterExp = "营=期")
     private Long courseId;
@@ -115,6 +119,15 @@ public class FsUserCourseCount extends BaseEntity
     {
         return missCourseStatus;
     }
+    public void setMissCourseDays(Long missCourseDays)
+    {
+        this.missCourseDays = missCourseDays;
+    }
+
+    public Long getMissCourseDays()
+    {
+        return missCourseDays;
+    }
     public void setCourseId(Long courseId)
     {
         this.courseId = courseId;
@@ -196,6 +209,7 @@ public class FsUserCourseCount extends BaseEntity
             .append("watchCourseCount", getWatchCourseCount())
             .append("missCourseCount", getMissCourseCount())
             .append("missCourseStatus", getMissCourseStatus())
+            .append("missCourseDays", getMissCourseDays())
             .append("courseId", getCourseId())
             .append("partCourseCount", getPartCourseCount())
             .append("lastWatchDate", getLastWatchDate())

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

@@ -217,4 +217,5 @@ public interface FsUserMapper
 
     UserDetailsVO getCountRedPacket(@Param("userId") Long userId, @Param("fsUserId") Long fsUserId, @Param("dateTag") String dateTag);
 
+    int batchUpdateFsUserByIds(@Param("ids") String[] ids, @Param("status") Integer status);
 }

+ 7 - 1
fs-service-system/src/main/java/com/fs/store/param/h5/FsUserPageListParam.java

@@ -25,6 +25,9 @@ public class FsUserPageListParam implements Serializable {
     @ApiModelProperty(value = "是否是黑名单,默认是false", required = true)
     private Boolean isBlack = false;
 
+    @ApiModelProperty(value = "销售id")
+    private String companyUserId;
+
     @ApiModelProperty(value = "注册时间-开始")
     private String registerStartTime;
 
@@ -40,8 +43,11 @@ public class FsUserPageListParam implements Serializable {
     @ApiModelProperty(value = "看课状态,0全部;1未看过课;2正常看课;3停止看课")
     private String watchCourseType;
 
-    @ApiModelProperty(value = "缺课状态,1-已缺课;2-未缺课")
+    @ApiModelProperty(value = "缺课状态,0全部;1-已缺课;2-未缺课")
     private String missCourseStatus;
 
+    @ApiModelProperty(value = "连续停课排序,0-连续缺课天数多到少;1-连续缺课天数少到多;2-按注册时间晚到早;3-会员姓名0-9-A-Z")
+    private String continueMissCourseSort;
+
 }
 

+ 28 - 0
fs-service-system/src/main/java/com/fs/store/param/h5/TagListParam.java

@@ -0,0 +1,28 @@
+package com.fs.store.param.h5;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 标签列表 入参对象
+ */
+@Data
+public class TagListParam implements Serializable {
+
+    @ApiModelProperty(value = "页码,默认为1", required = true)
+    private Integer pageNum =1;
+
+    @ApiModelProperty(value = "页大小,默认为10", required = true)
+    private Integer pageSize = 10;
+
+    @ApiModelProperty(value = "用户id,不用传")
+    private Long userId;
+
+    @ApiModelProperty(value = "模糊搜索名称,多个用逗号隔开")
+    private String keyword;
+
+}
+

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

@@ -136,4 +136,7 @@ public interface IFsUserService
     UserListPageVO getUserNumber(Long userId);
 
     UserDetailsVO getUserDetails(Long userId, Long fsUserId, String dateTag);
+
+    Boolean disabledUser(String[] ids, boolean status);
+
 }

+ 25 - 2
fs-service-system/src/main/java/com/fs/store/service/impl/FsUserServiceImpl.java

@@ -29,6 +29,7 @@ import com.fs.store.vo.h5.FsUserPageListVO;
 import com.fs.store.vo.h5.UserDetailsVO;
 import com.fs.store.vo.h5.UserListCountVO;
 import com.fs.store.vo.h5.UserListPageVO;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.fs.store.mapper.FsUserMapper;
@@ -380,7 +381,29 @@ public class FsUserServiceImpl implements IFsUserService
 
     @Override
     public UserDetailsVO getUserDetails(Long userId, Long fsUserId, String dateTag) {
-        fsUserMapper.getCountAnswer(userId, fsUserId, dateTag);
-        return null;
+        UserDetailsVO countAnswer = fsUserMapper.getCountAnswer(userId, fsUserId, dateTag);
+        UserDetailsVO countRedPacket = fsUserMapper.getCountRedPacket(userId, fsUserId, dateTag);
+        UserDetailsVO vo = new UserDetailsVO();
+        if (countRedPacket != null) {
+            BeanUtils.copyProperties(countRedPacket, vo);
+        }
+        if (countAnswer != null) {
+            vo.setAnswerTime(countAnswer.getAnswerTime());
+            vo.setAnswerRightTime(countAnswer.getAnswerRightTime());
+        }
+        return vo;
+    }
+
+    @Override
+    public Boolean disabledUser(String[] ids, boolean status) {
+        boolean result;
+        if(status){
+            //启用
+            result = fsUserMapper.batchUpdateFsUserByIds(ids, 1) > 0;
+        } else {
+            //禁用
+            result = fsUserMapper.batchUpdateFsUserByIds(ids, 0) > 0;
+        }
+        return result;
     }
 }

+ 19 - 0
fs-service-system/src/main/java/com/fs/store/vo/h5/CompanyUserTagListVO.java

@@ -0,0 +1,19 @@
+package com.fs.store.vo.h5;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 用户标签 返回对象
+ */
+@Data
+@ApiModel
+public class CompanyUserTagListVO {
+    @ApiModelProperty(value = "标签id")
+    private Long tagId;
+
+    @ApiModelProperty(value = "标签名称")
+    private String tagName;
+
+}

+ 2 - 0
fs-service-system/src/main/java/com/fs/store/vo/h5/FsUserPageListVO.java

@@ -71,6 +71,8 @@ public class FsUserPageListVO {
     @ApiModelProperty(value = "标签名称")
     private String tag;
 
+    @ApiModelProperty(value = "销售名称")
+    private String companyUserNickName;
 
 
 }

+ 8 - 0
fs-service-system/src/main/java/com/fs/store/vo/h5/UserDetailsVO.java

@@ -23,4 +23,12 @@ public class UserDetailsVO {
     @ApiModelProperty(value = "答题红包金额")
     private int answerRedPacketAmount;
 
+    @ApiModelProperty(value = "完播次数")
+    private int completeWatchCount;
+
+    @ApiModelProperty(value = "观看次数")
+    private int watchTimes;
+
+
+
 }

+ 98 - 0
fs-service-system/src/main/resources/mapper/company/CompanyTagUserMapper.xml

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fs.company.mapper.CompanyTagUserMapper">
+
+    <resultMap type="CompanyTagUser" id="CompanyTagUserResult">
+        <result property="id"    column="id"    />
+        <result property="tagIds"    column="tag_ids"    />
+        <result property="userId"    column="user_id"    />
+        <result property="companyId"    column="company_id"    />
+        <result property="companyUserId"    column="company_user_id"    />
+        <result property="createTime"    column="create_time"    />
+    </resultMap>
+
+    <sql id="selectCompanyTagUserVo">
+        select id, tag_ids, user_id, company_id, company_user_id, create_time from company_tag_user
+    </sql>
+
+    <select id="selectCompanyTagUserList" parameterType="CompanyTagUser" resultMap="CompanyTagUserResult">
+        <include refid="selectCompanyTagUserVo"/>
+        <where>
+            <if test="tagIds != null  and tagIds != ''"> and tag_ids = #{tagIds}</if>
+            <if test="userId != null "> and user_id = #{userId}</if>
+            <if test="companyId != null "> and company_id = #{companyId}</if>
+            <if test="companyUserId != null "> and company_user_id = #{companyUserId}</if>
+        </where>
+    </select>
+
+    <select id="selectCompanyTagUserById" parameterType="Long" resultMap="CompanyTagUserResult">
+        <include refid="selectCompanyTagUserVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertCompanyTagUser" parameterType="CompanyTagUser" useGeneratedKeys="true" keyProperty="id">
+        insert into company_tag_user
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="tagIds != null">tag_ids,</if>
+            <if test="userId != null">user_id,</if>
+            <if test="companyId != null">company_id,</if>
+            <if test="companyUserId != null">company_user_id,</if>
+            <if test="createTime != null">create_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="tagIds != null">#{tagIds},</if>
+            <if test="userId != null">#{userId},</if>
+            <if test="companyId != null">#{companyId},</if>
+            <if test="companyUserId != null">#{companyUserId},</if>
+            <if test="createTime != null">#{createTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateCompanyTagUser" parameterType="CompanyTagUser">
+        update company_tag_user
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="tagIds != null">tag_ids = #{tagIds},</if>
+            <if test="userId != null">user_id = #{userId},</if>
+            <if test="companyId != null">company_id = #{companyId},</if>
+            <if test="companyUserId != null">company_user_id = #{companyUserId},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteCompanyTagUserById" parameterType="Long">
+        delete from company_tag_user where id = #{id}
+    </delete>
+
+    <delete id="deleteCompanyTagUserByIds" parameterType="String">
+        delete from company_tag_user where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <select id="getTagList" resultType="CompanyUserTagListVO">
+        SELECT
+        company_tag.tag as tagName,
+        company_tag.tag_id
+        FROM
+        company_tag_user
+        right JOIN company_tag ON FIND_IN_SET( company_tag.tag_id, company_tag_user.tag_ids ) > 0
+        WHERE 1 = 1
+        <if test="userIds != null and userIds.size() > 0 ">
+        AND company_tag_user.company_user_id in
+        <foreach item="item" collection="userIds" open="(" separator="," close=")">
+              #{item}
+        </foreach>
+        </if>
+        <if test="keywords != null and keywords.length > 0 ">
+            and
+            <foreach item="item" collection="keywords" open="(" separator="or" close=")">
+                company_tag.tag like concat('%',#{item},'%')
+            </foreach>
+        </if>
+    </select>
+
+</mapper>

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

@@ -363,7 +363,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
 
-
+    <select id="selectAllCompanyUserByParentId" resultType="CompanyUser">
+        SELECT
+            *
+        FROM
+            company_user
+        WHERE
+            del_flag = 0
+            AND parent_id = #{parentId}
+    </select>
 
 
 </mapper>

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

@@ -10,7 +10,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="watchCourseCount"    column="watch_course_count"    />
         <result property="missCourseCount"    column="miss_course_count"    />
         <result property="missCourseStatus"    column="miss_course_status"    />
+        <result property="missCourseDays"    column="miss_course_days"    />
         <result property="courseId"    column="course_id"    />
+        <result property="partCourseCount"    column="part_course_count"    />
         <result property="lastWatchDate"    column="last_watch_date"    />
         <result property="status"    column="status"    />
         <result property="stopWatchDays"    column="stop_watch_days"    />
@@ -19,10 +21,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="createBy"    column="create_by"    />
         <result property="updateBy"    column="update_by"    />
         <result property="completeWatchDate"    column="complete_watch_date"    />
+        <result property="completeWatchCount"    column="complete_watch_count"    />
+        <result property="watchTimes"    column="watch_times"    />
     </resultMap>
 
     <sql id="selectFsUserCourseCountVo">
-        select id, user_id, watch_course_count, miss_course_count, miss_course_status, course_id, last_watch_date, status, stop_watch_days, create_time, update_time, create_by, update_by, complete_watch_date from fs_user_course_count
+        select id, user_id, watch_course_count, miss_course_count, miss_course_status, miss_course_days, course_id, part_course_count, last_watch_date, status, stop_watch_days, create_time, update_time, create_by, update_by, complete_watch_date, complete_watch_count, watch_times from fs_user_course_count
     </sql>
 
     <select id="selectFsUserCourseCountList" parameterType="FsUserCourseCount" resultMap="FsUserCourseCountResult">
@@ -32,11 +36,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="watchCourseCount != null "> and watch_course_count = #{watchCourseCount}</if>
             <if test="missCourseCount != null "> and miss_course_count = #{missCourseCount}</if>
             <if test="missCourseStatus != null "> and miss_course_status = #{missCourseStatus}</if>
+            <if test="missCourseDays != null "> and miss_course_days = #{missCourseDays}</if>
             <if test="courseId != null "> and course_id = #{courseId}</if>
+            <if test="partCourseCount != null  and partCourseCount != ''"> and part_course_count = #{partCourseCount}</if>
             <if test="lastWatchDate != null "> and last_watch_date = #{lastWatchDate}</if>
             <if test="status != null "> and status = #{status}</if>
             <if test="stopWatchDays != null "> and stop_watch_days = #{stopWatchDays}</if>
             <if test="completeWatchDate != null "> and complete_watch_date = #{completeWatchDate}</if>
+            <if test="completeWatchCount != null "> and complete_watch_count = #{completeWatchCount}</if>
+            <if test="watchTimes != null "> and watch_times = #{watchTimes}</if>
         </where>
     </select>
     
@@ -53,7 +61,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="watchCourseCount != null">watch_course_count,</if>
             <if test="missCourseCount != null">miss_course_count,</if>
             <if test="missCourseStatus != null">miss_course_status,</if>
+            <if test="missCourseDays != null">miss_course_days,</if>
             <if test="courseId != null">course_id,</if>
+            <if test="partCourseCount != null">part_course_count,</if>
             <if test="lastWatchDate != null">last_watch_date,</if>
             <if test="status != null">status,</if>
             <if test="stopWatchDays != null">stop_watch_days,</if>
@@ -62,6 +72,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createBy != null">create_by,</if>
             <if test="updateBy != null">update_by,</if>
             <if test="completeWatchDate != null">complete_watch_date,</if>
+            <if test="completeWatchCount != null">complete_watch_count,</if>
+            <if test="watchTimes != null">watch_times,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -69,7 +81,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="watchCourseCount != null">#{watchCourseCount},</if>
             <if test="missCourseCount != null">#{missCourseCount},</if>
             <if test="missCourseStatus != null">#{missCourseStatus},</if>
+            <if test="missCourseDays != null">#{missCourseDays},</if>
             <if test="courseId != null">#{courseId},</if>
+            <if test="partCourseCount != null">#{partCourseCount},</if>
             <if test="lastWatchDate != null">#{lastWatchDate},</if>
             <if test="status != null">#{status},</if>
             <if test="stopWatchDays != null">#{stopWatchDays},</if>
@@ -78,6 +92,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createBy != null">#{createBy},</if>
             <if test="updateBy != null">#{updateBy},</if>
             <if test="completeWatchDate != null">#{completeWatchDate},</if>
+            <if test="completeWatchCount != null">#{completeWatchCount},</if>
+            <if test="watchTimes != null">#{watchTimes},</if>
          </trim>
     </insert>
 
@@ -88,7 +104,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="watchCourseCount != null">watch_course_count = #{watchCourseCount},</if>
             <if test="missCourseCount != null">miss_course_count = #{missCourseCount},</if>
             <if test="missCourseStatus != null">miss_course_status = #{missCourseStatus},</if>
+            <if test="missCourseDays != null">miss_course_days = #{missCourseDays},</if>
             <if test="courseId != null">course_id = #{courseId},</if>
+            <if test="partCourseCount != null">part_course_count = #{partCourseCount},</if>
             <if test="lastWatchDate != null">last_watch_date = #{lastWatchDate},</if>
             <if test="status != null">status = #{status},</if>
             <if test="stopWatchDays != null">stop_watch_days = #{stopWatchDays},</if>
@@ -97,6 +115,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createBy != null">create_by = #{createBy},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="completeWatchDate != null">complete_watch_date = #{completeWatchDate},</if>
+            <if test="completeWatchCount != null">complete_watch_count = #{completeWatchCount},</if>
+            <if test="watchTimes != null">watch_times = #{watchTimes},</if>
         </trim>
         where id = #{id}
     </update>

+ 62 - 14
fs-service-system/src/main/resources/mapper/store/FsUserMapper.xml

@@ -279,12 +279,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         fs_user_course_count.course_id,
         fs_user_course_count.part_course_count,
         fs_user_course_count.last_watch_date,
-        fs_user_course_count.STATUS AS course_count,
+        fs_user_course_count.STATUS AS courseCountStatus,
         fs_user_course_count.stop_watch_days,
         fs_user_course_count.create_time,
         fs_user_course_count.complete_watch_date,
         company_tag.tag,
-        company_tag_user.tag_ids
+        company_tag_user.tag_ids,
+        company_user.nick_name as companyUserNickName
         FROM
         fs_user
         left join company_user on fs_user.company_user_id = company_user.user_id
@@ -292,6 +293,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN company_tag_user ON fs_user.user_id = company_tag_user.user_id
         LEFT JOIN company_tag ON FIND_IN_SET(company_tag.tag_id, company_tag_user.tag_ids) > 0
         where company_user.parent_id = #{userId}
+        <if test="companyUserId != null and companyUserId !='' ">
+            and company_user.user_id = #{companyUserId}
+        </if>
         <choose>
             <when test = "isBlack">
                 AND fs_user.status = 0
@@ -353,6 +357,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 </when>
             </choose>
         </if>
+        <if test="continueMissCourseSort != null and continueMissCourseSort !='' ">
+            order by
+            <choose>
+                <when test = "continueMissCourseSort == 0">
+                    fs_user_course_count.miss_course_days desc
+                </when>
+                <when test = "continueMissCourseSort == 1">
+                    fs_user_course_count.miss_course_days asc
+                </when>
+                <when test = "continueMissCourseSort == 2">
+                    fs_user.create_time desc
+                </when>
+                <when test = "continueMissCourseSort == 3">
+                    fs_user.nickname asc
+                </when>
+            </choose>
+        </if>
 
     </select>
 
@@ -371,9 +392,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="getCountAnswer" resultType="UserDetailsVO">
         SELECT
-            (
+        (
                 SELECT
-                    count( DISTINCT log_id ) AS answerTime
+                ifnull(count( DISTINCT log_id ), 0) AS answerTime
                 FROM
                     fs_course_answer_logs
                         LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
@@ -400,10 +421,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                     fs_user.user_id
                 HAVING
                     fs_user.user_id = #{fsUserId}
-            ),
+            ) AS answerTime,
             (
                 SELECT
-                    count( DISTINCT log_id ) AS answerRightTime
+                ifnull(count( DISTINCT log_id ), 0) AS answerRightTime
                 FROM
                     fs_course_answer_logs
                         LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
@@ -431,24 +452,51 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                     fs_user.user_id
                 HAVING
                     fs_user.user_id = #{fsUserId}
-            );
+            ) AS answerRightTime;
     </select>
 
-    <select id="getCountRedPacket" resultType="UserDetailsVO">
+    <select id="getCountRedPacket" resultType="com.fs.store.vo.h5.UserDetailsVO">
         SELECT
-            count( DISTINCT log_id ) AS answerRedPacketTime,
-            sum( amount ) AS answerRedPacketAmount,
-            complete_watch_count,
-            watch_times,
-            fs_user.user_id
+        ifnull( count( DISTINCT log_id ), 0 ) AS answerRedPacketTime,
+        ifnull( sum( amount ), 0 ) AS answerRedPacketAmount,
+        ifnull( complete_watch_count, 0 ) AS completeWatchCount ,
+        ifnull( watch_times, 0 ) AS watchTimes,
+        fs_user.user_id
         FROM
             fs_course_red_packet_log
                 LEFT JOIN fs_user ON fs_user.user_id = fs_course_red_packet_log.user_id
                 LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
+                LEFT JOIN fs_user_course_count ON fs_user_course_count.user_id = fs_user.user_id
         WHERE
             company_user.parent_id = #{userId}
+            <if test="dateTag != null and dateTag !='' ">
+                <choose>
+                    <when test = "dateTag == '今天'">
+                        and to_days(fs_course_red_packet_log.create_time) = to_days(now())
+                    </when>
+                    <when test = "dateTag == ' 昨天'">
+                        and to_days(now()) - to_days(fs_course_red_packet_log.create_time) &lt;= 1
+                    </when>
+                    <when test = "dateTag == '前天'">
+                        and to_days(now()) - to_days(fs_course_red_packet_log.create_time) &lt;= 2
+                    </when>
+                    <when test = "dateTag == '近七天'">
+                        and DATE_SUB(CURDATE(), INTERVAL 7 DAY) &lt;= date(fs_course_red_packet_log.create_time)
+                    </when>
+                </choose>
+            </if>
+        GROUP BY
+        fs_user.user_id
+        HAVING
+        fs_user.user_id = #{fsUserId}
     </select>
 
-
+    <update id="batchUpdateFsUserByIds" parameterType="Long">
+        update fs_user
+        set status = #{status} where user_id in
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
 
 </mapper>