Selaa lähdekoodia

1、未开始的课程进行倒计时

yfh 1 viikko sitten
vanhempi
commit
758d925628

+ 1 - 0
fs-common/src/main/java/com/fs/common/enums/BizResponseEnum.java

@@ -9,6 +9,7 @@ public enum BizResponseEnum {
     FAIL(500, "操作失败"),
     PARAM_ERROR(400, "参数错误"),
     DATA_NOT_EXIST(1002, "数据不存在"),
+    WATCH_LATEST_COURSE(482, "请观看最新的课程项目"),
     WAIT_APPROVAL(505, "等待审核");
 
     private final Integer code;

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

@@ -2627,9 +2627,9 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
         //查询看课记录
 //        FsCourseWatchLog watchCourseVideo = courseWatchLogMapper.getWatchCourseVideoByFsUser(param.getUserId(), param.getVideoId(), param.getCompanyUserId());
         FsCourseWatchLog watchCourseVideo = courseWatchLogMapper.getCourseWatchLogByUser(param.getUserId(), param.getVideoId(), param.getPeriodId());
-
-        if (!isUserCoursePeriodValid(param)) {
-            return ResponseResult.fail(ExceptionCodeEnum.WATCH_LATEST_COURSE.getCode(), ExceptionCodeEnum.WATCH_LATEST_COURSE.getDescription());
+        Map<String, Object> userCoursePeriodValid = isUserCoursePeriodValid(param);
+        if (!((boolean)userCoursePeriodValid.get("isWithinRangeSafe"))) {
+            return ResponseResult.fail(BizResponseEnum.WATCH_LATEST_COURSE, userCoursePeriodValid);
         }
         // 项目看课数限制
         if (!EXCLUDE_PROJECTS.contains(signProjectName) && !CloudHostUtils.hasCloudHostName("弘德堂")) {
@@ -2697,7 +2697,8 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
      * @param param 查询参数
      * @return 如果当前时间在有效范围内且状态为1,返回true,否则返回false
      */
-    public boolean isUserCoursePeriodValid(FsUserCourseAddCompanyUserParam param) {
+    public Map<String, Object> isUserCoursePeriodValid(FsUserCourseAddCompanyUserParam param) {
+        Map<String, Object> map = new HashMap<>();
         // 查询课程周期信息
         FsUserCoursePeriodDays periodDays = getPeriodDaysInfo(param);
 
@@ -2715,9 +2716,20 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
         log.error("传入参数:开始时间:{},结束时间:{},periodDays={}", effectiveStartTime, effectiveEndTime, periodDays);
         if (ObjectUtils.isEmpty(effectiveStartTime) || ObjectUtils.isEmpty(effectiveEndTime)) {
             log.error("请检查营期时间!");
-            return false;
+            map.put("isWithinRangeSafe", false);
+            return map;
+        }
+        boolean isWithinRangeSafe = DateUtil.isWithinRangeSafe(LocalDateTime.now(), effectiveStartTime, effectiveEndTime) && periodDays.getStatus() == 1;
+        map.put("isWithinRangeSafe", isWithinRangeSafe);
+        // 计算差值,如果是未到开课时间的课程,计算出时间差值
+        if(periodDays.getStatus() != 2 && LocalDateTime.now().isBefore(effectiveStartTime)){
+            long millis = Duration.between(LocalDateTime.now(), effectiveStartTime).toMillis();
+            map.put("millis", millis);
+            map.put("countdown", true);
+        } else {
+            map.put("countdown", false);
         }
-        return DateUtil.isWithinRangeSafe(LocalDateTime.now(), effectiveStartTime, effectiveEndTime) && periodDays.getStatus() == 1;
+        return map;
     }
 
     // 其他辅助方法保持不变

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

@@ -98,6 +98,8 @@ public interface IFsUserService
      */
     public int deleteFsUserByUserId(Long userId);
 
+    int realDeleteFsUserByUserId(Long userId);
+
     List<FsUserVO> selectFsUserListVO(FsUserParam fsUser);
 
     FsUser selectFsUserByOpenId(String openId);

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

@@ -278,6 +278,11 @@ public class FsUserServiceImpl implements IFsUserService {
         return fsUserMapper.updateFsUserByUserId(userId);
     }
 
+    @Override
+    public int realDeleteFsUserByUserId(Long userId) {
+        return fsUserMapper.deleteFsUserByUserId(userId);
+    }
+
     /**
      * 列表查询
      * @param fsUser

+ 54 - 21
fs-user-app/src/main/java/com/fs/app/controller/AppLoginController.java

@@ -277,7 +277,7 @@ public class AppLoginController extends AppBaseController{
                     userMap.setAppId(updatedAppId);
                     userService.updateFsUser(userMap);
                 }
-                
+
                 if (StringUtils.isNotEmpty(param.getJpushId())) {
                     updateExistingUserJpushId(user, param.getJpushId());
                 }
@@ -358,6 +358,7 @@ public class AppLoginController extends AppBaseController{
 
     @ApiOperation("绑定手机号")
     @PostMapping("/setPhone")
+    @Transactional(rollbackFor = Exception.class)
     public R setPhone(@Validated @RequestBody FsUserEditPhoneParam param) {
         logger.info("fcj 绑定手机号入参:{}", param);
         FsUser user = userService.selectFsUserByUnionid(param.getUnionId());
@@ -365,9 +366,20 @@ public class AppLoginController extends AppBaseController{
             return R.error("用户数据不存在");
         }
         FsUser userMap = findUserByPhone(param.getPhone());
-//        if (userMap!=null){
-//            return R.error("该手机号已绑定其他账号");
-//        }
+        //绑定的手机号已存在用户的情况,将微信登录的时候创建的新号的UnionId移动到老号中,删除新号(将两个号合并)
+        if (userMap!=null){
+            if (StringUtils.isNotEmpty(userMap.getUnionId())&&!userMap.getUnionId().equals(user.getUnionId())){
+                return R.error("该手机号已绑定其他微信");
+            }
+            userMap.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null);
+            userMap.setSource(param.getSource());
+            userMap.setUnionId(user.getUnionId());
+            if (userService.updateFsUser(userMap)>0){
+                userService.realDeleteFsUserByUserId(user.getUserId());
+                return generateTokenAndReturn(userMap);
+            }
+            return R.error("绑定手机号失败");
+        }
         user.setPhone(param.getPhone());
         user.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null );
         user.setSource(param.getSource()!= null ? param.getSource() : null);
@@ -384,10 +396,14 @@ public class AppLoginController extends AppBaseController{
 
     @ApiOperation("绑定微信")
     @PostMapping("/bindWeChat")
+    @Transactional(rollbackFor = Exception.class)
     public R bindWeChat(@Validated @RequestBody FsUserEditUnionidParam param) {
         try {
             logger.info("zyp app绑定微信,param:{}", param);
             Map result = WxUtil.getAccessToken(param.getCode(), openProperties.getAppId(), openProperties.getSecret());
+            if (!result.containsKey("access_token")) {
+                return R.error("微信授权失败");
+            }
             String accessToken = result.get("access_token").toString();
             String unionid = result.get("unionid").toString();
             String openid = result.get("openid").toString();
@@ -398,21 +414,38 @@ public class AppLoginController extends AppBaseController{
             FsUser user = findUserByPhone(param.getPhone());
             if (user!=null && StringUtils.isEmpty(user.getUnionId())){
                 FsUser userByUnionId = userMapper.selectFsUserByUnionid(unionid);
-//                if (userByUnionId!=null){
-//                    return R.error("该微信已绑定其他用户,请勿重复绑定!");
-//                }
-                user.setSource(param.getSource() != null ? param.getSource() : null );
-                user.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null);
-                user.setNickName(nickname);
-                user.setAvatar(avatar);
-                user.setSex(sex);
-                user.setUnionId(unionid);
-                if (userService.updateFsUser(user)>0){
-                    return generateTokenAndReturn(user);
+                //绑定的微信已存在用户的情况,将手机号一键登录的时候创建的新号的UnionId移动到老号中,删除新号(将两个号合并)
+                if (userByUnionId!=null){
+                    if (StringUtils.isNotEmpty(userByUnionId.getPhone())&&!user.getPhone().equals(userByUnionId.getPhone())){
+                        return R.error("该微信已绑定其他手机号");
+                    }
+                    userByUnionId.setPhone(user.getPhone());
+                    userByUnionId.setSource(param.getSource() != null ? param.getSource() : null );
+                    userByUnionId.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null);
+                    userByUnionId.setNickName(nickname);
+                    userByUnionId.setAvatar(avatar);
+                    userByUnionId.setSex(sex);
+                    if (userService.updateFsUser(userByUnionId)>0){
+                        userService.realDeleteFsUserByUserId(user.getUserId());
+                        return generateTokenAndReturn(userByUnionId);
+                    }
+                    else {
+                        return R.error("绑定微信失败");
+                    }
+                }else {
+                    user.setSource(param.getSource() != null ? param.getSource() : null );
+                    user.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null);
+                    user.setNickName(nickname);
+                    user.setAvatar(avatar);
+                    user.setSex(sex);
+                    user.setUnionId(unionid);
+                    if (userService.updateFsUser(user)>0){
+                        return generateTokenAndReturn(user);
+                    }
+                    else {
+                        return R.error("绑定微信失败");
+                    }
                 }
-//                else {
-//                    return R.error("绑定微信失败");
-//                }
             }
             return R.error("数据参数异常!");
         }catch (Exception e){
@@ -736,12 +769,12 @@ public class AppLoginController extends AppBaseController{
         if (StringUtils.isEmpty(newAppId)) {
             return currentAppIds == null ? "" : currentAppIds;
         }
-        
+
         // 如果当前appId为空,直接返回新appId
         if (StringUtils.isEmpty(currentAppIds)) {
             return newAppId;
         }
-        
+
         // 检查是否已存在
         String[] appIdArray = currentAppIds.split(",");
         for (String appId : appIdArray) {
@@ -750,7 +783,7 @@ public class AppLoginController extends AppBaseController{
                 return currentAppIds;
             }
         }
-        
+
         // 不存在,追加到末尾
         return currentAppIds + "," + newAppId;
     }