Преглед изворни кода

Merge remote-tracking branch 'origin/Payment-Configuration' into Payment-Configuration

xgb пре 4 дана
родитељ
комит
3c97e1105c

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

@@ -219,4 +219,18 @@ public class FsUserAdminController extends BaseController {
             return error("请先选择会员");
         }
     }
+
+
+    /**
+     * 批量拉黑
+     */
+    @PreAuthorize("@ss.hasPermi('user:fsUser:batchUpdateStatus')")
+    @Log(title = "用户", businessType = BusinessType.UPDATE)
+    @PostMapping("/batchUpdateStatus")
+    public AjaxResult batchUpdateStatus(@RequestBody FsUserCompanyUser fsUser)
+    {
+        return toAjax(fsUserCompanyUserService.batchUpdateStatus(fsUser.getIds(), fsUser.getStatus()));
+    }
+
+
 }

+ 7 - 0
fs-service/src/main/java/com/fs/course/domain/FsUserCompanyUser.java

@@ -8,6 +8,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * 微信用户和销售关系对象 fs_user_company_user
@@ -71,5 +72,11 @@ public class FsUserCompanyUser {
      */
     private LocalDateTime createTime;
 
+    /**
+     * id数组
+     */
+    @TableField(exist = false)
+    private List<Long> ids;
+
 
 }

+ 16 - 0
fs-service/src/main/java/com/fs/course/mapper/FsUserCourseMapper.java

@@ -316,6 +316,22 @@ public interface FsUserCourseMapper
      */
     Integer selectTodayCourseWatchLogCountByUserIdAndProjectId(@Param("userId") Long userId, @Param("projectId") Long projectId);
 
+    /**
+     * 根据时间限制来进行处理
+     *
+     * @param userId
+     * @param projectId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    Long countDistinctVideoByUserAndProject(
+            @Param("userId") Long userId,
+            @Param("projectId") Long projectId,
+            @Param("startTime") String startTime,
+            @Param("endTime") String endTime
+    );
+
     @Select("select course_id,course_name,description,img_url,second_img secondImg,views from fs_user_course where " +
             " is_private = 0 and is_del = 0 and is_show = 1 and is_tui = 1 order by sort,course_id")
     List<FsUserCourseVideoAppletVO> selectFsUserCourseVideoApplet();

+ 10 - 0
fs-service/src/main/java/com/fs/course/mapper/FsUserCoursePeriodDaysMapper.java

@@ -133,4 +133,14 @@ public interface FsUserCoursePeriodDaysMapper extends BaseMapper<FsUserCoursePer
     List<Long> selectFsUserCoursePeriodDaysForLastById(FsUserCoursePeriodDays param);
 
     List<FsUserCoursePeriodDays> selectFsUserCoursePeriodDaysByCourseId(@Param("courseId") Long courseId);
+
+    /**
+     * 根据课程id,营期id,小节id查询时间
+     *
+     * @param courseId
+     * @param periodId
+     * @param videoId
+     * @return
+     */
+    FsUserCoursePeriodDays selectFsUserCoursePeriodDaysByPeriodDays(@Param("courseId")Long courseId, @Param("periodId")Long periodId, @Param("videoId")Long videoId);
 }

+ 18 - 1
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fs.course.service.impl;
 
+import cn.hutool.core.lang.TypeReference;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
@@ -113,6 +114,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.stream.Collectors;
 
+import static com.fs.common.utils.date.DateUtil.YYYY_MM_DD_HH_MM_SS;
 import static com.fs.course.utils.LinkUtil.generateRandomStringWithLock;
 
 /**
@@ -2645,7 +2647,22 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
             return ResponseResult.fail(BizResponseEnum.WATCH_LATEST_COURSE, userCoursePeriodValid);
         }
         // 项目看课数限制
-        if (!EXCLUDE_PROJECTS.contains(signProjectName) && !CloudHostUtils.hasCloudHostName("弘德堂")) {
+        if (CloudHostUtils.hasCloudHostName("四福堂")) {
+            FsUserCoursePeriodDays fsUserCoursePeriodDays = fsUserCoursePeriodDaysMapper.selectFsUserCoursePeriodDaysByPeriodDays(param.getCourseId(), param.getPeriodId(), param.getVideoId());
+
+            String startTime = null;
+            String endTime = null;
+            if (ObjectUtils.isNotEmpty(fsUserCoursePeriodDays)) {
+                startTime = fsUserCoursePeriodDays.getStartDateTime() != null ? DateUtil.formatLocalDateTime(fsUserCoursePeriodDays.getStartDateTime(), YYYY_MM_DD_HH_MM_SS) : null;
+                endTime = fsUserCoursePeriodDays.getEndDateTime() != null ? DateUtil.formatLocalDateTime(fsUserCoursePeriodDays.getEndDateTime(), YYYY_MM_DD_HH_MM_SS) : null;
+            }
+
+            log.error("进入了看课限制:传入参数:={},watchCourseVideo={}", param, watchCourseVideo);
+            Long logCount = fsUserCourseMapper.countDistinctVideoByUserAndProject(param.getUserId(), courseProject, startTime, endTime);
+            if (Objects.isNull(watchCourseVideo) && logCount > 0) {
+                return ResponseResult.fail(ExceptionCodeEnum.EXCEED_COURSE_LIMIT.getCode(), ExceptionCodeEnum.EXCEED_COURSE_LIMIT.getDescription());
+            }
+        }else if (!EXCLUDE_PROJECTS.contains(signProjectName) && !CloudHostUtils.hasCloudHostName("弘德堂")) {
             log.error("进入了看课限制:传入参数:={},watchCourseVideo={}",param, watchCourseVideo);
             Integer logCount = fsUserCourseMapper.selectTodayCourseWatchLogCountByUserIdAndProjectId(param.getUserId(), courseProject);
             if (Objects.isNull(watchCourseVideo) && logCount > 0) {

+ 2 - 2
fs-service/src/main/java/com/fs/hisStore/mapper/FsUserScrmMapper.java

@@ -127,7 +127,7 @@ public interface FsUserScrmMapper
     @Update("update fs_user set pay_count=pay_count+1" +
             " where user_id=#{userId}")
     int incPayCount(Long userId);
-    
+
     /**
      * 增加用户余额
      * @param userId 用户ID
@@ -136,7 +136,7 @@ public interface FsUserScrmMapper
      */
     @Update("update fs_user set integral = IFNULL(integral, 0) + #{integral} where user_id = #{userId}")
     int incrIntegral(@Param("userId") Long userId, @Param("integral") BigDecimal integral);
-    @Select("select * from fs_user where phone=#{phone}")
+    @Select("select * from fs_user where phone=#{phone} and is_del =0")
     FsUserScrm selectFsUserByPhone(String phone);
 
     /**

+ 20 - 0
fs-service/src/main/resources/mapper/course/FsUserCourseMapper.xml

@@ -162,6 +162,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where cwl.user_id = #{userId} and uc.project = #{projectId}
           and cwl.create_time between curdate() and date_add(curdate(), interval 1 day) and cwl.send_type = 1
     </select>
+
+    <select id="countDistinctVideoByUserAndProject" resultType="java.lang.Long">
+        select count(distinct cwl.video_id)
+        from fs_course_watch_log cwl
+        inner join fs_user_course_video ucv on ucv.video_id = cwl.video_id
+        inner join fs_user_course uc on uc.course_id = ucv.course_id
+        where cwl.user_id = #{userId}
+        and uc.project = #{projectId}
+        and cwl.send_type = 1
+        and (
+        <choose>
+            <when test="startTime != null and endTime != null">
+                cwl.create_time between #{startTime} and #{endTime}
+            </when>
+            <otherwise>
+                cwl.create_time between curdate() and date_add(curdate(), interval 1 day)
+            </otherwise>
+        </choose>
+        )
+    </select>
     <select id="selectCourseNamesByIds" resultType="java.util.Map">
         SELECT CAST(course_id AS SIGNED) AS courseId, course_name AS courseName
         FROM fs_user_course

+ 16 - 0
fs-service/src/main/resources/mapper/course/FsUserCoursePeriodDaysMapper.xml

@@ -254,4 +254,20 @@
         <include refid="selectFsUserCoursePeriodDaysVo"/>
                  where del_flag ='0' and course_id = #{courseId}
     </select>
+
+
+
+
+
+    <select id="selectFsUserCoursePeriodDaysByPeriodDays"
+            resultType="com.fs.course.domain.FsUserCoursePeriodDays">
+        <include refid="selectFsUserCoursePeriodDaysVo"/>
+        where
+            NOW() between start_date_time and end_date_time
+          and course_id =  #{courseId}
+          and video_id =  #{videoId}
+          and period_id =  #{periodId}
+          and status = 1
+          and del_flag = 0;
+    </select>
 </mapper>

+ 7 - 1
fs-user-app/src/main/java/com/fs/app/controller/AppLoginController.java

@@ -273,7 +273,6 @@ public class AppLoginController extends AppBaseController{
             if (StringUtils.isBlank(param.getCode())) {
                 return R.error("code不存在");
             }
-
             String appId = param.getAppId();
             String appSecret = "";
             if (StringUtils.isBlank(appId)) {
@@ -335,6 +334,8 @@ public class AppLoginController extends AppBaseController{
                 map.put("isNew", true);
                 map.put("user", user);
                 map.put("unionid",unionid);
+                openIMService. accountCheck("U"+user.getUserId(),"1");
+
                 return R.ok(map);
             } else {
                 // 老用户 - 检查并添加appId(不重复添加)
@@ -365,6 +366,7 @@ public class AppLoginController extends AppBaseController{
                     map.put("unionid",user.getUnionId());
                     return R.ok(map);
                 }
+                openIMService. accountCheck("U"+user.getUserId(),"1");
             }
             int isFirstLogin = userNewTaskService.performTaskOne(user.getUserId());
             String token = jwtUtils.generateToken(user.getUserId());
@@ -372,6 +374,7 @@ public class AppLoginController extends AppBaseController{
             map.put("token", token);
             map.put("user", user);
             map.put("isFirst",isFirstLogin);
+
             return R.ok(map);
         }catch (Exception e){
             logger.error("zyp 登录失败:{}", e.getMessage());
@@ -793,6 +796,8 @@ public class AppLoginController extends AppBaseController{
             }
             //登录成功以后写入达人表
             //fsUserTalentService.addFsUserTalent(fsUser.getUserId());
+            openIMService. accountCheck("U"+user.getUserId(),"1");
+
             return generateTokenAndReturn(user);
         }else {
             return R.ok().put("users",usersByPhone);
@@ -938,6 +943,7 @@ public class AppLoginController extends AppBaseController{
         }else {
             return R.ok().put("users",usersByPhone);
         }
+        openIMService. accountCheck("U"+user.getUserId(),"1");
         return generateTokenAndReturn(user);
     }
 

+ 0 - 1
fs-user-app/src/main/java/com/fs/app/controller/store/WxUserScrmController.java

@@ -384,7 +384,6 @@ public class WxUserScrmController extends AppBaseController {
         }
     }
 
-
     @ApiOperation("小程序Mall登录")
     @PostMapping("/loginByMiniMallApp")
     @Synchronized