1231123
This commit is contained in:
@@ -37,7 +37,11 @@ public class HomeRecommendJob {
|
|||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
log.error("刷新首页推荐置顶用户失败",e);
|
log.error("刷新首页推荐置顶用户失败",e);
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
homeManager.refreshAnchorBannerCache();
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("刷新首页主播推荐失败",e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.ruoyi.cai.domain.AnchorBanner;
|
import com.ruoyi.cai.domain.AnchorBanner;
|
||||||
|
import com.ruoyi.cai.dto.admin.vo.anchorBanner.AnchorBannerAdminVo;
|
||||||
import com.ruoyi.cai.service.AnchorBannerService;
|
import com.ruoyi.cai.service.AnchorBannerService;
|
||||||
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.annotation.Log;
|
||||||
import com.ruoyi.common.annotation.RepeatSubmit;
|
import com.ruoyi.common.annotation.RepeatSubmit;
|
||||||
@@ -41,8 +42,8 @@ public class AnchorBannerController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@SaCheckPermission("cai:anchorBanner:list")
|
@SaCheckPermission("cai:anchorBanner:list")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public TableDataInfo<AnchorBanner> list(AnchorBanner bo, PageQuery pageQuery) {
|
public TableDataInfo<AnchorBannerAdminVo> list(AnchorBannerAdminVo bo, PageQuery pageQuery) {
|
||||||
Page<AnchorBanner> page = anchorBannerService.page(pageQuery.build(), Wrappers.lambdaQuery(bo));
|
Page<AnchorBannerAdminVo> page = anchorBannerService.pageAdmin(pageQuery, bo);
|
||||||
return TableDataInfo.build(page);
|
return TableDataInfo.build(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -81,6 +81,14 @@ public class IndexController {
|
|||||||
return R.ok(BeanConvertUtil.convertListTo(res, IndexBannerVo::new));
|
return R.ok(BeanConvertUtil.convertListTo(res, IndexBannerVo::new));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/anchor/hot")
|
||||||
|
@Operation(summary = "首页查询技师主播推荐")
|
||||||
|
@Log(title = "首页查询技师主播推荐", businessType = BusinessType.OTHER,isPrintResponseData = false, isSaveDb = false)
|
||||||
|
public R<List<AnchorListVo>> anchorHot(){
|
||||||
|
List<AnchorListVo> home = homeManager.getAnchorBannerCache();
|
||||||
|
return R.ok(home);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/anchor/page")
|
@GetMapping("/anchor/page")
|
||||||
@Operation(summary = "首页查询主播接口-分页")
|
@Operation(summary = "首页查询主播接口-分页")
|
||||||
@Log(title = "首页查询主播接口", businessType = BusinessType.OTHER,isPrintResponseData = false, isSaveDb = false)
|
@Log(title = "首页查询主播接口", businessType = BusinessType.OTHER,isPrintResponseData = false, isSaveDb = false)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.ruoyi.cai.domain.User;
|
|||||||
import com.ruoyi.cai.domain.UserCount;
|
import com.ruoyi.cai.domain.UserCount;
|
||||||
import com.ruoyi.cai.im.ImManager;
|
import com.ruoyi.cai.im.ImManager;
|
||||||
import com.ruoyi.cai.manager.AwardManager;
|
import com.ruoyi.cai.manager.AwardManager;
|
||||||
|
import com.ruoyi.cai.manager.HomeManager;
|
||||||
import com.ruoyi.cai.service.DynamicService;
|
import com.ruoyi.cai.service.DynamicService;
|
||||||
import com.ruoyi.cai.service.UserCountService;
|
import com.ruoyi.cai.service.UserCountService;
|
||||||
import com.ruoyi.cai.service.UserService;
|
import com.ruoyi.cai.service.UserService;
|
||||||
@@ -37,6 +38,17 @@ public class UserTest {
|
|||||||
private AwardManager awardManager;
|
private AwardManager awardManager;
|
||||||
@Autowired
|
@Autowired
|
||||||
private CaiLoginManager caiLoginManager;
|
private CaiLoginManager caiLoginManager;
|
||||||
|
@Autowired
|
||||||
|
private HomeManager homeManager;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void refreshHome(){
|
||||||
|
try {
|
||||||
|
homeManager.refreshAnchorBannerCache();
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("刷新首页主播推荐失败",e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void caiLoginManager(){
|
public void caiLoginManager(){
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ public class RedisHttpConstant {
|
|||||||
|
|
||||||
public static final String HOME_RECOMMEND_TOP_REDIS = REDIS_P + "homeRecommendAnchorTop";
|
public static final String HOME_RECOMMEND_TOP_REDIS = REDIS_P + "homeRecommendAnchorTop";
|
||||||
public static final String HOME_RECOMMEND_REDIS = REDIS_P + "homeRecommendAnchor";
|
public static final String HOME_RECOMMEND_REDIS = REDIS_P + "homeRecommendAnchor";
|
||||||
|
|
||||||
|
public static final String HOME_ANCHOR_BANNER_REDIS = REDIS_P + "homeAnchorBanner";
|
||||||
public static final String HOME_NEW_REDIS = REDIS_P + "homeNewAnchor";
|
public static final String HOME_NEW_REDIS = REDIS_P + "homeNewAnchor";
|
||||||
public static final String HOME_ACTIVE_REDIS = REDIS_P + "homeActiveAnchor";
|
public static final String HOME_ACTIVE_REDIS = REDIS_P + "homeActiveAnchor";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.ruoyi.cai.dto.admin.vo.anchorBanner;
|
||||||
|
|
||||||
|
import com.ruoyi.cai.domain.AnchorBanner;
|
||||||
|
import com.ruoyi.common.annotation.Sensitive;
|
||||||
|
import com.ruoyi.common.enums.SensitiveStrategy;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AnchorBannerAdminVo extends AnchorBanner {
|
||||||
|
/**
|
||||||
|
* 昵称
|
||||||
|
*/
|
||||||
|
private String nickname;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
|
@Sensitive(strategy = SensitiveStrategy.PHONE)
|
||||||
|
private String mobile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 头像
|
||||||
|
*/
|
||||||
|
private String avatar;
|
||||||
|
/**
|
||||||
|
* 性别
|
||||||
|
*/
|
||||||
|
private Integer gender;
|
||||||
|
private Integer age;
|
||||||
|
private Integer isAnchor;
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ import com.ruoyi.cai.enums.SystemConfigEnum;
|
|||||||
import com.ruoyi.cai.enums.home.AnchorListQueryTypeEnum;
|
import com.ruoyi.cai.enums.home.AnchorListQueryTypeEnum;
|
||||||
import com.ruoyi.cai.mq.AmqpHttpProducer;
|
import com.ruoyi.cai.mq.AmqpHttpProducer;
|
||||||
import com.ruoyi.cai.mq.handle.dto.LoginNotifyDTO;
|
import com.ruoyi.cai.mq.handle.dto.LoginNotifyDTO;
|
||||||
|
import com.ruoyi.cai.service.AnchorBannerService;
|
||||||
import com.ruoyi.cai.service.AnchorService;
|
import com.ruoyi.cai.service.AnchorService;
|
||||||
import com.ruoyi.cai.service.AnchorTopService;
|
import com.ruoyi.cai.service.AnchorTopService;
|
||||||
import com.ruoyi.cai.service.UserService;
|
import com.ruoyi.cai.service.UserService;
|
||||||
@@ -42,6 +43,8 @@ public class HomeManager {
|
|||||||
private UserService userService;
|
private UserService userService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserForbidManager userForbidManager;
|
private UserForbidManager userForbidManager;
|
||||||
|
@Autowired
|
||||||
|
private AnchorBannerService anchorBannerService;
|
||||||
|
|
||||||
public void refreshHomeAnchorTopCache(){
|
public void refreshHomeAnchorTopCache(){
|
||||||
List<AnchorListVo> anchorTop = anchorTopService.anchorTop(4);
|
List<AnchorListVo> anchorTop = anchorTopService.anchorTop(4);
|
||||||
@@ -49,6 +52,12 @@ public class HomeManager {
|
|||||||
bucket.set(anchorTop);
|
bucket.set(anchorTop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void refreshAnchorBannerCache(){
|
||||||
|
List<AnchorListVo> anchorList = anchorBannerService.anchorBanner();
|
||||||
|
RBucket<List<AnchorListVo>> bucket = redissonClient.getBucket(RedisHttpConstant.HOME_ANCHOR_BANNER_REDIS);
|
||||||
|
bucket.set(anchorList);
|
||||||
|
}
|
||||||
|
|
||||||
public void refreshHomeRecommendCache(){
|
public void refreshHomeRecommendCache(){
|
||||||
PageQuery pageQuery = new PageQuery();
|
PageQuery pageQuery = new PageQuery();
|
||||||
pageQuery.setPageSize(200);
|
pageQuery.setPageSize(200);
|
||||||
@@ -94,6 +103,13 @@ public class HomeManager {
|
|||||||
bucket.set(records);
|
bucket.set(records);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<AnchorListVo> getAnchorBannerCache(){
|
||||||
|
RBucket<List<AnchorListVo>> bucket = redissonClient.getBucket(RedisHttpConstant.HOME_ANCHOR_BANNER_REDIS);
|
||||||
|
List<AnchorListVo> list = bucket.get();
|
||||||
|
Collections.shuffle(list);
|
||||||
|
int endIndex = Math.min(5, list.size());
|
||||||
|
return list.subList(0,endIndex);
|
||||||
|
}
|
||||||
|
|
||||||
public List<AnchorListVo> getHomeCache(PageQuery pageQuery,AnchorListQuery query){
|
public List<AnchorListVo> getHomeCache(PageQuery pageQuery,AnchorListQuery query){
|
||||||
AnchorListQueryTypeEnum anchorListQueryTypeEnum = AnchorListQueryTypeEnum.getByCode(query.getType());
|
AnchorListQueryTypeEnum anchorListQueryTypeEnum = AnchorListQueryTypeEnum.getByCode(query.getType());
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
package com.ruoyi.cai.mapper;
|
package com.ruoyi.cai.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.ruoyi.cai.domain.AnchorBanner;
|
import com.ruoyi.cai.domain.AnchorBanner;
|
||||||
|
import com.ruoyi.cai.dto.admin.vo.anchorBanner.AnchorBannerAdminVo;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.AnchorListVo;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主播首页推荐Mapper接口
|
* 主播首页推荐Mapper接口
|
||||||
@@ -11,4 +17,8 @@ import com.ruoyi.cai.domain.AnchorBanner;
|
|||||||
*/
|
*/
|
||||||
public interface AnchorBannerMapper extends BaseMapper<AnchorBanner> {
|
public interface AnchorBannerMapper extends BaseMapper<AnchorBanner> {
|
||||||
|
|
||||||
|
Page<AnchorBannerAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") AnchorBannerAdminVo bo);
|
||||||
|
|
||||||
|
List<AnchorListVo> pageApp();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
package com.ruoyi.cai.service;
|
package com.ruoyi.cai.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.ruoyi.cai.domain.AnchorBanner;
|
import com.ruoyi.cai.domain.AnchorBanner;
|
||||||
|
import com.ruoyi.cai.dto.admin.vo.anchorBanner.AnchorBannerAdminVo;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.AnchorListVo;
|
||||||
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主播首页推荐Service接口
|
* 主播首页推荐Service接口
|
||||||
@@ -12,4 +18,9 @@ import com.ruoyi.cai.domain.AnchorBanner;
|
|||||||
public interface AnchorBannerService extends IService<AnchorBanner> {
|
public interface AnchorBannerService extends IService<AnchorBanner> {
|
||||||
|
|
||||||
boolean saveData(AnchorBanner bo);
|
boolean saveData(AnchorBanner bo);
|
||||||
|
|
||||||
|
Page<AnchorBannerAdminVo> pageAdmin(PageQuery pageQuery, AnchorBannerAdminVo bo);
|
||||||
|
|
||||||
|
List<AnchorListVo> anchorBanner();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,23 @@
|
|||||||
package com.ruoyi.cai.service.impl;
|
package com.ruoyi.cai.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.ruoyi.cai.domain.Anchor;
|
import com.ruoyi.cai.domain.Anchor;
|
||||||
import com.ruoyi.cai.domain.AnchorBanner;
|
import com.ruoyi.cai.domain.AnchorBanner;
|
||||||
import com.ruoyi.cai.domain.User;
|
import com.ruoyi.cai.domain.User;
|
||||||
|
import com.ruoyi.cai.dto.admin.vo.anchorBanner.AnchorBannerAdminVo;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.AnchorListVo;
|
||||||
import com.ruoyi.cai.mapper.AnchorBannerMapper;
|
import com.ruoyi.cai.mapper.AnchorBannerMapper;
|
||||||
import com.ruoyi.cai.service.AnchorBannerService;
|
import com.ruoyi.cai.service.AnchorBannerService;
|
||||||
import com.ruoyi.cai.service.AnchorService;
|
import com.ruoyi.cai.service.AnchorService;
|
||||||
import com.ruoyi.cai.service.UserService;
|
import com.ruoyi.cai.service.UserService;
|
||||||
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.exception.ServiceException;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主播首页推荐Service业务层处理
|
* 主播首页推荐Service业务层处理
|
||||||
*
|
*
|
||||||
@@ -42,4 +48,14 @@ public class AnchorBannerServiceImpl extends ServiceImpl<AnchorBannerMapper, Anc
|
|||||||
this.save(bo);
|
this.save(bo);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<AnchorBannerAdminVo> pageAdmin(PageQuery pageQuery, AnchorBannerAdminVo bo) {
|
||||||
|
return baseMapper.pageAdmin(pageQuery.build(), bo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AnchorListVo> anchorBanner() {
|
||||||
|
return baseMapper.pageApp();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||||
|
<mapper namespace="com.ruoyi.cai.mapper.AnchorBannerMapper">
|
||||||
|
<select id="pageAdmin" resultType="com.ruoyi.cai.dto.admin.vo.anchorBanner.AnchorBannerAdminVo">
|
||||||
|
select
|
||||||
|
t1.*,t2.age,t2.avatar,t2.usercode,t2.nickname,t2.mobile,t2.gender,t2.age,t2.city,t2.is_anchor
|
||||||
|
from cai_anchor_banner t1
|
||||||
|
left join cai_user t2 on t1.user_id = t2.id
|
||||||
|
<where>
|
||||||
|
<if test="bo.mobile != null and bo.mobile != ''">
|
||||||
|
and t2.mobile = #{bo.mobile}
|
||||||
|
</if>
|
||||||
|
<if test="bo.usercode != null and bo.usercode != ''">
|
||||||
|
and t2.usercode = #{bo.usercode}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by t1.create_time desc
|
||||||
|
</select>
|
||||||
|
<select id="pageApp" resultType="com.ruoyi.cai.dto.app.vo.AnchorListVo">
|
||||||
|
select t1.id as user_id,t1.avatar,t1.gender,t1.city,t1.nickname,t1.usercode,t1.city_id,t1.city,t2.give_score,
|
||||||
|
t2.price,t3.status as online
|
||||||
|
from cai_anchor_banner p
|
||||||
|
join cai_user t1 on p.user_id = t1.id
|
||||||
|
join cai_anchor t2 on t1.id = t2.user_id
|
||||||
|
join cai_user_online t3 on t1.id = t3.user_id
|
||||||
|
where t1.status = 0 and t1.is_anchor = 1 and t1.usercode > 100 and p.open_status = 1
|
||||||
|
limit 100
|
||||||
|
</select>
|
||||||
|
</mapper>
|
||||||
Reference in New Issue
Block a user