无关风月
2025-04-03 b01f752252eaadd1fa31eda6a9ad43146660b721
bug修改
5个文件已修改
136 ■■■■ 已修改文件
xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-auth/src/main/java/com/xinquan/auth/service/SysLoginService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserViewingHistoryController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java
@@ -77,6 +77,11 @@
            }
            @Override
            public R<List<AppUserViewingHistory>> getMeditationHistoryCountAll() {
                return null;
            }
            @Override
            public R<Long> getCourseHistoryCount(Long id) {
                return R.fail("后台远程调用 根据课程id 获取实际观看人数");
            }
xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java
@@ -49,6 +49,8 @@
    public R<AppUser> getUserByPhone(@PathVariable("phone")String phone);
    @PostMapping("/user/app-user-viewing-history/getMeditationHistoryCount/{id}")
    public R<Long> getMeditationHistoryCount(@PathVariable("id") Long id);
    @PostMapping("/user/app-user-viewing-history/getMeditationHistoryCountAll")
    public R<List<AppUserViewingHistory>> getMeditationHistoryCountAll();
    @PostMapping("/user/app-user-viewing-history/getCourseHistoryCount/{id}")
    public R<Long> getCourseHistoryCount(@PathVariable("id") Long id);
    @PostMapping("/user/app-user-viewing-history/getCourseChapterHistoryCount/{id}")
xinquan-auth/src/main/java/com/xinquan/auth/service/SysLoginService.java
@@ -341,25 +341,25 @@
        if (StringUtils.isNull(appUser)) {
            recordLogService.recordLogininfor(body.getCellPhone(), Constants.LOGIN_FAIL,
                    "登录用户不存在");
            throw new ServiceException("登录用户:" + body.getCellPhone() + " 不存在");
            throw new ServiceException("登录用户:" + body.getCellPhone() + " 不存在",500);
        }
        // 1:正常 2:冻结 3:注销
        if (appUser.getUserStatus().equals(AppUserStatusEnum.FROZEN.getCode())) {
            recordLogService.recordLogininfor(body.getCellPhone(), Constants.LOGIN_FAIL,
                    "账号已冻结");
            throw new ServiceException("账号已冻结");
            throw new ServiceException("账号已冻结",500);
        }
        if (appUser.getUserStatus().equals(AppUserStatusEnum.LOGOUT.getCode())) {
            recordLogService.recordLogininfor(body.getCellPhone(), Constants.LOGIN_FAIL,
                    "账号已注销");
            throw new ServiceException("账号已注销");
            throw new ServiceException("账号已注销",500);
        }
        // 查询系统用户信息
        SysUser sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
        if (StringUtils.isNull(sysUser)) {
            recordLogService.recordLogininfor(body.getCellPhone(), Constants.LOGIN_FAIL,
                    "登录用户不存在");
            throw new ServiceException("登录用户:" + body.getCellPhone() + " 不存在");
            throw new ServiceException("登录用户:" + body.getCellPhone() + " 不存在",500);
        }
        passwordService.validate(sysUser, body.getPassword());
//        if (!sysUser.getPassword().equals(body.getPassword())){
xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java
@@ -32,6 +32,7 @@
import com.xinquan.order.api.feign.RemoteOrderService;
import com.xinquan.system.api.domain.AppUser;
import com.xinquan.meditation.api.domain.MeditationQuestion;
import com.xinquan.system.api.domain.AppUserViewingHistory;
import com.xinquan.system.api.domain.vo.AppUserVO;
import com.xinquan.system.api.model.LoginUser;
import com.xinquan.user.api.domain.dto.AppUserDTO;
@@ -65,6 +66,7 @@
    private final MeditationQuestionLikeService meditationQuestionLikeService;
    private final MeditationUserFavoriteService meditationUserFavoriteService;
    private final RemoteOrderService remoteOrderService;
    private final MeditationMapper meditationMapper;
    /**
     * 获取私人订制
     *
@@ -119,15 +121,13 @@
        if (loginUser==null){
            return new ArrayList<>();
        }
        Long userId = loginUser.getUserid();
        List<Order> orderList = remoteOrderService.getOrderListByType(userId,
                OrderFromEnum.MEDITATION.getCode(),
                SecurityConstants.INNER).getData();
        List<Long> meditationIdList = orderList.stream().map(Order::getBusinessId)
                .collect(Collectors.toList());
         Long userId = loginUser.getUserid();
        List<Order> data1 = remoteOrderService.getMeditationIsBuyAll(userId).getData();
        List<Long> meditationIdList = data1.stream().map(Order::getBusinessId).collect(Collectors.toList());
        if (CollUtils.isNotEmpty(meditationIdList)) {
            Set<Long> meditationIdSet = new HashSet<>(meditationIdList);
            voList = voList.stream()
                    .filter(meditationVO -> meditationIdList.contains(meditationVO.getId()))
                    .filter(meditationVO -> meditationIdSet.contains(meditationVO.getId()))
                    .peek(meditationVO -> meditationVO.setIsBuy(1))
                    .collect(Collectors.toList());
        }
@@ -156,15 +156,10 @@
            meditationLambdaQueryWrapper.orderByDesc(Meditation::getSortNum).last("limit 8");
        }
        List<Meditation> list =this.list(meditationLambdaQueryWrapper);
        List<Meditation> meditations = new ArrayList<>();
        for (Meditation meditation : list) {
            if (meditation.getListingStatus()==1){
                meditations.add(meditation);
            }
        }
        if (CollUtils.isNotEmpty(meditations)) {
        if (CollUtils.isNotEmpty(list)) {
            // 对象拷贝
            voList = BeanUtils.copyList(meditations, ClientMeditationVO.class);
            voList = BeanUtils.copyList(list, ClientMeditationVO.class);
        }
        handlePaidMeditation(voList);
        return voList;
@@ -306,11 +301,13 @@
        if (tokenService.getLoginUser()!=null){
            data1 = remoteOrderService.getMeditationIsBuyAll(tokenService.getLoginUser().getUserid()).getData();
        }
        List<AppUserViewingHistory> data2 = remoteAppUserService.getMeditationHistoryCountAll().getData();
        boolean temp = tokenService.getLoginUser()!=null;
        for (Meditation record : page.getRecords()) {
            Long data = remoteAppUserService.getMeditationHistoryCount(record.getId()).getData();
            record.setRealLearnedNum(Integer.valueOf(data+""));
            List<AppUserViewingHistory> collect = data2.stream().filter(e -> e.getBizId().equals(record.getId())).collect(Collectors.toList());
            record.setRealLearnedNum(collect.size());
            record.setRealLearnedNum(record.getVirtualLearnedNum()+record.getRealLearnedNum());
            if (tokenService.getLoginUser()!=null){
            if (temp){
                Order order = data1.stream().filter(e -> e.getBusinessId().equals(record.getId())).findFirst().orElse(null);
                if (order==null){
                    record.setIsBuy(2);
@@ -320,8 +317,8 @@
            }else{
                record.setIsBuy(2);
            }
            this.updateById(record);
        }
        this.updateBatchById(page.getRecords());
        // 将实体类转换为VO
        pageDTO = PageDTO.of(page, ClientMeditationVO.class);
        return pageDTO;
@@ -456,7 +453,7 @@
            }
        }
        this.updateById(meditation);
        return R.ok(vo);
    }
    @Override
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserViewingHistoryController.java
@@ -1,6 +1,7 @@
package com.xinquan.user.controller.client;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xinquan.common.core.domain.R;
import com.xinquan.common.core.utils.page.PageDTO;
@@ -114,6 +115,15 @@
        return R.ok(Long.valueOf(list.size()));
    }
    @PostMapping("/getMeditationHistoryCountAll")
    public R<List<AppUserViewingHistory>> getMeditationHistoryCountAll() {
        List<AppUserViewingHistory> list = appUserViewingHistoryService.lambdaQuery()
                .eq(AppUserViewingHistory::getViewingType, 1)
                .groupBy(AppUserViewingHistory::getAppUserId)
                .list();
        return R.ok(list);
    }
    @PostMapping("/getCourseHistoryCount/{id}")
    public R<Long> getCourseHistoryCount(@PathVariable("id") Long id) {
        List<AppUserViewingHistory> list = appUserViewingHistoryService.lambdaQuery()
@@ -224,6 +234,67 @@
    /**
     * 记录用户观看记录
     */
    @PostMapping("/testLookHistory")
    @ApiOperation(value = "记录用户观看冥想记录", tags = {"用户端-用户相关接口"})
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "冥想id", dataType = "Long", required = true),
            @ApiImplicitParam(name = "timeLook", value = "播放时长单位秒", dataType = "Integer", required = true)
    })
    public R<?> testLookHistory(@RequestParam("id") Long id,
                                  @RequestParam("timeLook") Integer timeLook) {
//        AppUserViewingHistory appUserViewingHistory = new AppUserViewingHistory();
//        appUserViewingHistory.setAppUserId(1907408237773807618L);
//        appUserViewingHistory.setBizId(id);
//        appUserViewingHistory.setViewingType(1);
//        appUserViewingHistory.setTimeLook(timeLook);
//        appUserViewingHistory.setCreateTime(LocalDateTime.now());
//        // 先查询用户当天有没有观看过该音频
//        AppUserViewingHistory appUserViewingHistory3 = appUserViewingHistoryService.lambdaQuery().eq(AppUserViewingHistory::getAppUserId, 1907408237773807618L)
//                .eq(AppUserViewingHistory::getBizId, id)
//                .apply("date_format(create_time,'%Y-%M-%D')=date_format(now(),'%Y-%M-%D')")
//                .eq(AppUserViewingHistory::getViewingType, 1).last("limit 1").one();
//        if (appUserViewingHistory3 != null) {
//            appUserViewingHistory3.setTimeLook(appUserViewingHistory3.getTimeLook() + timeLook);
//            appUserViewingHistoryService.updateById(appUserViewingHistory3);
//        } else {
//            appUserViewingHistoryService.save(appUserViewingHistory);
//        }
//        List<Long> collect = appUserService.list().stream().map(AppUser::getId).collect(Collectors.toList());
        List<Long> collect = appUserViewingHistoryService.list(new LambdaQueryWrapper<AppUserViewingHistory>()
                .groupBy(AppUserViewingHistory::getAppUserId)).stream().map(AppUserViewingHistory::getAppUserId).collect(Collectors.toList());
        for (Long l : collect) {
            List<AppUserViewingHistory> list = appUserViewingHistoryService.lambdaQuery()
                    .eq(AppUserViewingHistory::getAppUserId, l)
                    .eq(AppUserViewingHistory::getViewingType, 1)
                    .last("GROUP BY date_format(create_time,'%Y-%M-%D')").list();
            for (AppUserViewingHistory appUserViewingHistory : list) {
                List<AppUserViewingHistory> list1 = appUserViewingHistoryService.lambdaQuery().eq(AppUserViewingHistory::getAppUserId, appUserViewingHistory.getAppUserId())
                        .eq(AppUserViewingHistory::getViewingType, 1)
                        .ne(AppUserViewingHistory::getId, appUserViewingHistory.getId())
                        .eq(AppUserViewingHistory::getBizId, appUserViewingHistory.getBizId())
                        .apply("date_format(CONVERT_TZ(create_time, '+00:00', '+08:00'), '%Y-%m-%d')="+"'"+appUserViewingHistory.getCreateTime().toLocalDate()+"'").list();
                Integer timeLook1 = appUserViewingHistory.getTimeLook();
                for (AppUserViewingHistory userViewingHistory : list1) {
                    timeLook1+=userViewingHistory.getTimeLook();
                    appUserViewingHistoryService.removeById(userViewingHistory.getId());
                }
                appUserViewingHistory.setTimeLook(timeLook1);
                appUserViewingHistoryService.updateById(appUserViewingHistory);
            }
        }
        return R.ok();
    }
    /**
     * 记录用户观看记录
     */
    @PostMapping("/saveViewingHistory")
    @ApiOperation(value = "记录用户观看冥想记录", tags = {"用户端-用户相关接口"})
    @ApiImplicitParams({
@@ -244,7 +315,17 @@
        appUserViewingHistory.setViewingType(1);
        appUserViewingHistory.setTimeLook(timeLook);
        appUserViewingHistory.setCreateTime(LocalDateTime.now());
        appUserViewingHistoryService.save(appUserViewingHistory);
        // 先查询用户当天有没有观看过该音频
        AppUserViewingHistory appUserViewingHistory3 = appUserViewingHistoryService.lambdaQuery().eq(AppUserViewingHistory::getAppUserId, userId)
                .eq(AppUserViewingHistory::getBizId, id)
                .apply("date_format(create_time,'%Y-%M-%D')=date_format(now(),'%Y-%M-%D')")
                .eq(AppUserViewingHistory::getViewingType, 1).last("limit 1").one();
        if (appUserViewingHistory3!=null){
            appUserViewingHistory3.setTimeLook(appUserViewingHistory3.getTimeLook()+timeLook);
            appUserViewingHistoryService.updateById(appUserViewingHistory3);
        }else{
            appUserViewingHistoryService.save(appUserViewingHistory);
        }
        AppUser byId = appUserService.getById(userId);
        appUserService.updateById(byId);
        // 查询用户今日观看疗愈多少秒
@@ -260,7 +341,6 @@
        for (AppUserViewingHistory appUserViewingHistory1 : list) {
            if (appUserViewingHistory1.getTimeLook() != null) {
                temp += appUserViewingHistory1.getTimeLook();
            }
        }
        AppUserTree one = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId)