liujie
2 天以前 59099ec96f7a2da11df4b0b1593092b0aff38e90
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysProductIntroductionController.java
@@ -4,19 +4,28 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.model.TSysActivity;
import com.ruoyi.system.model.TSysEducationalInfo;
import com.ruoyi.system.model.TSysLive;
import com.ruoyi.system.model.TSysProductIntroduction;
import com.ruoyi.system.query.TSysProductIntroductionQuery;
import com.ruoyi.system.service.TSysActivityService;
import com.ruoyi.system.service.TSysEducationalInfoService;
import com.ruoyi.system.service.TSysLiveService;
import com.ruoyi.system.service.TSysProductIntroductionService;
import com.ruoyi.system.vo.TSysProductIntroductionVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.*;
/**
 * <p>
@@ -33,10 +42,18 @@
    private final TSysProductIntroductionService sysProductIntroductionService;
    private final TokenService tokenService;
    private final RedisCache redisCache;
    private final TSysEducationalInfoService sysEducationalInfoService;
    private final TSysActivityService sysActivityService;
    private final TSysLiveService sysLiveService;
    @Autowired
    public TSysProductIntroductionController(TSysProductIntroductionService sysProductIntroductionService, TokenService tokenService) {
    public TSysProductIntroductionController(TSysProductIntroductionService sysProductIntroductionService, TokenService tokenService, RedisCache redisCache, TSysEducationalInfoService sysEducationalInfoService, TSysActivityService sysActivityService, TSysLiveService sysLiveService) {
        this.sysProductIntroductionService = sysProductIntroductionService;
        this.tokenService = tokenService;
        this.redisCache = redisCache;
        this.sysEducationalInfoService = sysEducationalInfoService;
        this.sysActivityService = sysActivityService;
        this.sysLiveService = sysLiveService;
    }
    /**
@@ -44,10 +61,12 @@
     */
    @ApiOperation(value = "获取产品介绍分页列表")
    @PostMapping(value = "/pageList")
    public R<PageInfo<TSysProductIntroduction>> pageList(@RequestBody TSysProductIntroductionQuery query) {
    public R<PageInfo<TSysProductIntroductionVO>> pageList(@RequestBody TSysProductIntroductionQuery query) {
        Integer roleType = tokenService.getLoginUser().getUser().getRoleType();
        Long userId = tokenService.getLoginUser().getUserId();
        if(roleType == 5){
            query.setRoleType(roleType);
            query.setUserId(userId);
        }
        return R.ok(sysProductIntroductionService.pageList(query));
    }
@@ -59,6 +78,18 @@
    @PostMapping(value = "/list")
    public R<List<TSysProductIntroduction>> list() {
        return R.ok(sysProductIntroductionService.list(Wrappers.lambdaQuery(TSysProductIntroduction.class).orderByDesc(TSysProductIntroduction::getCreateTime)));
    }
    /**
     * 获取产品介绍管理列表
     */
    @ApiOperation(value = "获取产品介绍列表-banner使用")
    @PostMapping(value = "/listBanner")
    public R<List<TSysProductIntroduction>> listBanner() {
        return R.ok(sysProductIntroductionService.list(Wrappers.lambdaQuery(TSysProductIntroduction.class)
                .eq(TSysProductIntroduction::getStatus,1)
                .eq(TSysProductIntroduction::getShowType,1)
                .orderByDesc(TSysProductIntroduction::getCreateTime)));
    }
    /**
@@ -87,7 +118,22 @@
    @ApiOperation(value = "查看产品介绍详情")
    @GetMapping(value = "/getDetailById")
    public R<TSysProductIntroduction> getDetailById(@RequestParam String id) {
        return R.ok(sysProductIntroductionService.getById(id));
        TSysProductIntroduction sysProductIntroduction = sysProductIntroductionService.getById(id);
        // 查询次数自增 使用数据库原子更新操作
        sysProductIntroductionService.update(
                Wrappers.<TSysProductIntroduction>lambdaUpdate()
                        .setSql("click_count = click_count + 1")
                        .eq(TSysProductIntroduction::getId, id)
        );
        // 如果是诊所
        Integer roleType = tokenService.getLoginUser().getUser().getRoleType();
        if(roleType == 5){
            Long userId = tokenService.getLoginUser().getUserId();
            Set<Long> clickCount = new HashSet<>();
            clickCount.add(userId);
            redisCache.setCacheSet(Constants.SYS_PRODUCT_CLICK_COUNT+id,clickCount);
        }
        return R.ok(sysProductIntroduction);
    }
    /**
@@ -123,6 +169,62 @@
                .eq(TSysProductIntroduction::getId,id));
        return R.ok();
    }
    /**
     * 热门推荐统计数量
     */
    @ApiOperation(value = "热门推荐统计数量")
    @GetMapping(value = "/recommendationsCount")
    public R<Map<String,Integer>> recommendationsCount() {
        Long userId = tokenService.getLoginUser().getUserId();
        // 查询教育资讯
        List<TSysEducationalInfo> sysEducationalInfos = sysEducationalInfoService.list(Wrappers.<TSysEducationalInfo>lambdaQuery()
                .eq(TSysEducationalInfo::getStatus, 1));
        int educationalCount = sysEducationalInfos.size();
        for (TSysEducationalInfo sysEducationalInfo : sysEducationalInfos) {
            Set<Long> userIds = redisCache.getCacheSet(Constants.SYS_EDUCATION_CLICK_COUNT+sysEducationalInfo.getId());
            if(userIds.contains(userId)){
                educationalCount = educationalCount - 1;
            }
        }
        // 查询产品介绍
        List<TSysProductIntroduction> sysProductIntroductions = sysProductIntroductionService.list(Wrappers.lambdaQuery(TSysProductIntroduction.class)
                .eq(TSysProductIntroduction::getStatus, 1));
        int productCount = sysProductIntroductions.size();
        for (TSysProductIntroduction sysProductIntroduction : sysProductIntroductions) {
            Set<Long> userIds = redisCache.getCacheSet(Constants.SYS_PRODUCT_CLICK_COUNT+sysProductIntroduction.getId());
            if(userIds.contains(userId)){
                productCount = productCount - 1;
            }
        }
        // 查询热门活动
        List<TSysActivity> sysActivities = sysActivityService.list(Wrappers.lambdaQuery(TSysActivity.class)
                .eq(TSysActivity::getStatus, 1));
        int activityCount = sysActivities.size();
        for (TSysActivity sysActivity : sysActivities) {
            Set<Long> userIds = redisCache.getCacheSet(Constants.SYS_ACTIVITY_CLICK_COUNT+sysActivity.getId());
            if(userIds.contains(userId)){
                activityCount = activityCount - 1;
            }
        }
        // 查询直播
        List<TSysLive> sysLives = sysLiveService.list();
        int liveCount = sysLives.size();
        for (TSysLive sysLive : sysLives) {
            Set<Long> userIds = redisCache.getCacheSet(Constants.SYS_LIVE_CLICK_COUNT+sysLive.getId());
            if(userIds.contains(userId)){
                liveCount = liveCount - 1;
            }
        }
        Map<String,Integer> map = new HashMap<>();
        map.put("educationalCount",educationalCount);
        map.put("productCount",productCount);
        map.put("activityCount",activityCount);
        map.put("liveCount",liveCount);
        return R.ok(map);
    }
    
}