This commit is contained in:
77
2024-07-07 23:06:17 +08:00
parent f919eb9a26
commit cf66c432d3
11 changed files with 143 additions and 3 deletions

View File

@@ -23,6 +23,8 @@ public class RedisHttpConstant {
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_ANCHOR_BANNER_REDIS = REDIS_P + "homeAnchorBanner";
public static final String HOME_NEW_REDIS = REDIS_P + "homeNewAnchor";
public static final String HOME_ACTIVE_REDIS = REDIS_P + "homeActiveAnchor";
}

View File

@@ -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;
}

View File

@@ -9,6 +9,7 @@ import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.enums.home.AnchorListQueryTypeEnum;
import com.ruoyi.cai.mq.AmqpHttpProducer;
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.AnchorTopService;
import com.ruoyi.cai.service.UserService;
@@ -42,6 +43,8 @@ public class HomeManager {
private UserService userService;
@Autowired
private UserForbidManager userForbidManager;
@Autowired
private AnchorBannerService anchorBannerService;
public void refreshHomeAnchorTopCache(){
List<AnchorListVo> anchorTop = anchorTopService.anchorTop(4);
@@ -49,6 +52,12 @@ public class HomeManager {
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(){
PageQuery pageQuery = new PageQuery();
pageQuery.setPageSize(200);
@@ -94,6 +103,13 @@ public class HomeManager {
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){
AnchorListQueryTypeEnum anchorListQueryTypeEnum = AnchorListQueryTypeEnum.getByCode(query.getType());

View File

@@ -1,7 +1,13 @@
package com.ruoyi.cai.mapper;
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.dto.admin.vo.anchorBanner.AnchorBannerAdminVo;
import com.ruoyi.cai.dto.app.vo.AnchorListVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 主播首页推荐Mapper接口
@@ -11,4 +17,8 @@ import com.ruoyi.cai.domain.AnchorBanner;
*/
public interface AnchorBannerMapper extends BaseMapper<AnchorBanner> {
Page<AnchorBannerAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") AnchorBannerAdminVo bo);
List<AnchorListVo> pageApp();
}

View File

@@ -1,7 +1,13 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
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接口
@@ -12,4 +18,9 @@ import com.ruoyi.cai.domain.AnchorBanner;
public interface AnchorBannerService extends IService<AnchorBanner> {
boolean saveData(AnchorBanner bo);
Page<AnchorBannerAdminVo> pageAdmin(PageQuery pageQuery, AnchorBannerAdminVo bo);
List<AnchorListVo> anchorBanner();
}

View File

@@ -1,17 +1,23 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.Anchor;
import com.ruoyi.cai.domain.AnchorBanner;
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.service.AnchorBannerService;
import com.ruoyi.cai.service.AnchorService;
import com.ruoyi.cai.service.UserService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 主播首页推荐Service业务层处理
*
@@ -42,4 +48,14 @@ public class AnchorBannerServiceImpl extends ServiceImpl<AnchorBannerMapper, Anc
this.save(bo);
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();
}
}

View File

@@ -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>