Browse Source

feat:1、会员重粉,直接打上重粉标签;2、黑名单和会员展示调整

caoliqin 2 months ago
parent
commit
48eaff89f4

+ 13 - 9
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -18,10 +18,7 @@ import com.fs.course.domain.*;
 import com.fs.course.dto.CoursePackageDTO;
 import com.fs.course.mapper.*;
 import com.fs.course.param.*;
-import com.fs.course.param.newfs.FsUserCourseAddCompanyUserParam;
-import com.fs.course.param.newfs.FsUserCourseVideoLinkParam;
-import com.fs.course.param.newfs.FsUserCourseVideoUParam;
-import com.fs.course.param.newfs.UserCourseVideoPageParam;
+import com.fs.course.param.newfs.*;
 import com.fs.course.service.IFsUserCourseVideoService;
 import com.fs.course.service.IFsVideoResourceService;
 import com.fs.course.vo.FsUserCourseVideoListUVO;
@@ -940,7 +937,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
 
         //判断:1、如果没有绑定销售,就提示;
         //2、如果只绑定了当前销售,需要添加看课记录(正常流程);
-        //3、以上都不是,则标识重粉,需要加入关系表
+        //3、以上都不是,则标识重粉,需要加入关系表,并打上重粉标签
         if(fsUser.getCompanyUserId() == null) {
             return ResponseResult.fail(503, "暂时未绑定销售,请联系管理员");
         }
@@ -987,6 +984,13 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
             if(i == 0) {
                 fsUserCompanyUserMapper.insertFsUserCompanyUser(fsUserCompanyUser);
             }
+
+            // 打上重粉标签
+            FsUserCourseBeMemberParam fsUserCourseBeMemberParam = new FsUserCourseBeMemberParam();
+            fsUserCourseBeMemberParam.setUserId(param.getUserId());
+            fsUserCourseBeMemberParam.setCompanyId(param.getCompanyId());
+            fsUserCourseBeMemberParam.setCompanyUserId(param.getCompanyUserId());
+            fsUserService.setRepeatFansTag(fsUserCourseBeMemberParam);
         }
         return ResponseResult.ok(Boolean.TRUE);
     }
@@ -1002,9 +1006,9 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         if(fsUserCoursePeriodDays != null && !fsUserCoursePeriodDays.isEmpty()){
             periodDays = fsUserCoursePeriodDays.get(0);
         }
-        if(periodDays.getStatus() != 1){
-            return ResponseResult.fail(403, "当前课程未开始或已结束,暂不能看课");
-        }
+//        if(periodDays.getStatus() != 1){
+//            return ResponseResult.fail(403, "当前课程未开始或已结束,暂不能看课");
+//        }
 
         String json = configService.selectConfigByKey("course.config");
         CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
@@ -1058,7 +1062,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
             FsUserCoursePeriodDays days = fsUserCoursePeriodDaysMapper.selectById(param.getId());
             vo.setStartDateTime(days.getStartDateTime());
             vo.setEndDateTime(days.getEndDateTime());
-            vo.setRang(DateUtil.isWithinRangeSafe(LocalDateTime.now(), days.getStartDateTime(), days.getEndDateTime()));
+            vo.setRang(DateUtil.isWithinRangeSafe(LocalDateTime.now(), days.getStartDateTime(), days.getEndDateTime()) && periodDays.getStatus() == 1);
         }
         return ResponseResult.ok(vo);
     }

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

@@ -217,6 +217,8 @@ public interface FsUserMapper
 
     List<UserListCountVO> getUserNumber(@Param("userId") Long userId);
 
+    int getRepeatUserNumber(@Param("userId") Long userId);
+
     UserDetailsVO getCountAnswer (@Param("userId") Long userId, @Param("fsUserId") Long fsUserId, @Param("dateTag") String dateTag);
 
     UserDetailsVO getCountRedPacket(@Param("userId") Long userId, @Param("fsUserId") Long fsUserId, @Param("dateTag") String dateTag);

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

@@ -246,4 +246,10 @@ public interface IFsUserService
      * @return  list
      */
     List<OptionsVO> selectUserListByMap(Map<String, Object> params);
+
+    /**
+     * 打重粉标签
+     * @param param
+     */
+    void setRepeatFansTag(FsUserCourseBeMemberParam param);
 }

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

@@ -13,12 +13,15 @@ import com.fs.common.utils.StringUtils;
 import com.fs.company.cache.ICompanyTagCacheService;
 import com.fs.company.cache.ICompanyUserCacheService;
 import com.fs.company.domain.Company;
+import com.fs.company.domain.CompanyTag;
 import com.fs.company.domain.CompanyTagUser;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.dto.CompanyIdAndUserDTO;
 import com.fs.company.mapper.CompanyMapper;
+import com.fs.company.mapper.CompanyTagMapper;
 import com.fs.company.mapper.CompanyTagUserMapper;
 import com.fs.company.mapper.CompanyUserMapper;
+import com.fs.company.service.ICompanyTagService;
 import com.fs.company.service.ICompanyUserService;
 import com.fs.course.mapper.FsUserCourseVideoMapper;
 import com.fs.course.param.newfs.FsUserCourseBeMemberParam;
@@ -118,6 +121,12 @@ public class FsUserServiceImpl implements IFsUserService
     @Autowired
     private FsUserCompanyUserMapper fsUserCompanyUserMapper;
 
+    @Autowired
+    private ICompanyTagService companyTagService;
+
+    @Autowired
+    CompanyTagMapper companyTagMapper;
+
     /**
      * 查询用户
      *
@@ -551,8 +560,14 @@ public class FsUserServiceImpl implements IFsUserService
         Map<String, Integer> map = list.stream()
                 .collect(Collectors.toMap(UserListCountVO::getStatus, UserListCountVO::getNum, (v1, v2) -> v1));
         UserListPageVO pageVO = new UserListPageVO();
-        pageVO.setNumber(map.getOrDefault("1", 0));
-        pageVO.setBlackNum(map.getOrDefault("0", 0));
+        Integer normalNum = map.getOrDefault("1", 0);
+        Integer blackNum = map.getOrDefault("0", 0);
+
+        // 黑名单人数加上重粉的数量,正常人数去掉重粉数量
+        int repeatUserNumber = fsUserMapper.getRepeatUserNumber(userId);
+        pageVO.setNumber(normalNum - repeatUserNumber);
+        pageVO.setBlackNum(blackNum + repeatUserNumber);
+
         return pageVO;
     }
 
@@ -833,6 +848,11 @@ public class FsUserServiceImpl implements IFsUserService
             companyTagUserMapper.insertCompanyTagUser(companyTagUser);
         }
 
+        // 如果是重粉,直接打上重粉的标签
+        if(1 == fsUserCompanyUser.getIsRepeatFans()){
+            this.setRepeatFansTag(param);
+        }
+
         //如果是设置了需要进入小黑屋,则需要返回提示,否则正常返回
         if(isDefaultBlack == 1){
             return ResponseResult.fail(402, "已成功注册,待管理审核");
@@ -840,6 +860,37 @@ public class FsUserServiceImpl implements IFsUserService
         return ResponseResult.ok(Boolean.TRUE);
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    public void setRepeatFansTag(FsUserCourseBeMemberParam param) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("tagName", "重粉");
+        List<CompanyTag> companyTags = companyTagMapper.selectCompanyTagListByMap(map);
+        Long tagId;
+        if(companyTags == null || companyTags.isEmpty()){
+            CompanyTag companyTag = new CompanyTag();
+            companyTag.setCompanyId(param.getCompanyId());
+            companyTag.setTag("重粉");
+            companyTagService.insertCompanyTag(companyTag);
+            tagId = companyTag.getTagId();
+        } else {
+            tagId = companyTags.get(0).getTagId();
+        }
+        //  查询
+        CompanyTagUser companyTagUserParam = new CompanyTagUser();
+        companyTagUserParam.setUserId(param.getUserId());
+        companyTagUserParam.setTagIds(tagId.toString());
+        List<CompanyTagUser> companyTagUsers = companyTagUserMapper.selectCompanyTagUserList(companyTagUserParam);
+        if(companyTagUsers == null || companyTagUsers.isEmpty()){
+            CompanyTagUser companyTagUser = new CompanyTagUser();
+            companyTagUser.setUserId(param.getUserId());
+            companyTagUser.setCompanyId(param.getCompanyId());
+            companyTagUser.setCompanyUserId(param.getCompanyUserId());
+            companyTagUser.setTagIds(tagId.toString());
+            companyTagUser.setCreateTime(new Date());
+            companyTagUserMapper.insertCompanyTagUser(companyTagUser);
+        }
+    }
+
     // 判断是否绑定了销售
     private static FsUserCompanyUser getFsUserCompanyUser(FsUserCourseBeMemberParam param, FsUser fsUser) {
         FsUserCompanyUser fsUserCompanyUser = new FsUserCompanyUser();

+ 3 - 0
fs-service-system/src/main/resources/mapper/company/CompanyTagMapper.xml

@@ -41,6 +41,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="params.companyId != null">
                 and ct.company_id = #{params.companyId}
             </if>
+            <if test="params.tagName != null">
+                and ct.tag = #{params.tagName}
+            </if>
         </where>
     </select>
 

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

@@ -20,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectCompanyTagUserList" parameterType="CompanyTagUser" resultMap="CompanyTagUserResult">
         <include refid="selectCompanyTagUserVo"/>
         <where>
-            <if test="tagIds != null  and tagIds != ''"> and tag_ids = #{tagIds}</if>
+            <if test="tagIds != null  and tagIds != ''"> and tag_ids like concat('%',#{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>

+ 16 - 2
fs-service-system/src/main/resources/mapper/store/FsUserMapper.xml

@@ -446,10 +446,10 @@
         </if>
         <choose>
             <when test = "isBlack">
-                AND fs_user.status = 0
+                AND (fs_user.status = 0 or fs_user_company_user.is_repeat_fans = 1)
             </when>
             <otherwise>
-                AND fs_user.status = 1
+                AND (fs_user.status = 1 and fs_user_company_user.is_repeat_fans = 0)
             </otherwise>
         </choose>
         <if test="keyword != null and keyword !='' ">
@@ -542,6 +542,20 @@
             fs_user.`status`
     </select>
 
+    <select id="getRepeatUserNumber" resultType="int">
+        SELECT
+            count( DISTINCT fs_user.user_id ) AS num
+        FROM
+            fs_user
+                LEFT JOIN fs_user_company_user ON fs_user_company_user.user_id = fs_user.user_id
+                LEFT JOIN company_user ON company_user.user_id = fs_user_company_user.company_user_id
+        WHERE
+            ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
+          AND fs_user.is_del = 0
+          AND fs_user_company_user.is_repeat_fans = 1 and fs_user.`status` = 1
+    </select>
+
+
     <select id="getCountAnswer" resultType="UserDetailsVO">
         SELECT
         (